Workbook POI 对Excel表格的读取

来源:互联网 发布:网络棋牌频道直播 编辑:程序博客网 时间:2024/05/08 09:09
package com.jt.www.controler;

import java.awt.Color;
import java.awt.EventQueue;

import javax.swing.JFrame;

import java.awt.Font;

import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JButton;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JFileChooser;
import javax.swing.JLabel;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

import com.jt.www.databean.XlsDataBean;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
/**
 *
 *
 * @author Feng
 * 数据导入解析 main
 *
 */
public class ImportDataClientHandler {

    private JFrame frame;
    private JTextField textField;
    private String filePath="";

    /**
     * 启动Appliction
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    ImportDataClientHandler window = new ImportDataClientHandler();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * 创建Appliction
     */
    public ImportDataClientHandler() {
        initialize();
        
        
    }

    /**
     * 初始化框架内容。
     */
    private List<XlsDataBean> initialize() {
        final List<XlsDataBean> list=new ArrayList<XlsDataBean>();
        frame = new JFrame();
        frame.setResizable(false);
        frame.setTitle("\u6570\u636E\u5BFC\u5165");
        frame.getContentPane().setFont(new Font("SimSun", Font.PLAIN, 12));
        frame.setBounds(100, 100, 486, 180);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);

        JLabel label = new JLabel("\u5BFC\u5165\u6570\u636E");
        label.setFont(new Font("宋体", Font.PLAIN, 12));
        label.setBounds(32, 64, 54, 15);
        frame.getContentPane().add(label);

        textField = new JTextField();
        textField.setText("点击添加文件");
        textField.setForeground(Color.LIGHT_GRAY);
        textField.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent arg0) {
                // JOptionPane.showMessageDialog(null,"您按下了查询按 钮");
                ChooseFileType my=new ChooseFileType();
                JFileChooser fileChooser = new JFileChooser("C:\\");
                fileChooser.setFileFilter(my);
                fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
                int returnVal = fileChooser.showOpenDialog(fileChooser);
                if (returnVal == JFileChooser.APPROVE_OPTION) {
                    filePath = fileChooser.getSelectedFile().getAbsolutePath();// 这个就是你选择的文件夹的路径
                    System.out.println(filePath);
                    textField.setText(filePath);
                    
                }
            }
        });
        textField.setBounds(84, 61, 200, 21);
        frame.getContentPane().add(textField);
        textField.setColumns(10);

        JButton btnNewButton = new JButton("确定");
        
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                 if(textField.getText().equals("点击添加文件")||textField.getText()==null){
                     JOptionPane.showMessageDialog(null,"没有文件!");
                 }
                 if(filePath!=""){
        //=============================Workbook 方式======================================
                    /* List<XlsDataBean> arr=new ArrayList<XlsDataBean>();
                     try {
                        Workbook wkb=Workbook.getWorkbook(new File(filePath));
                        Sheet sheet=wkb.getSheet(0);
                        System.out.println(sheet.getName()+","+sheet.getRows()+","+sheet.getColumns());
                        for(int i=0;i<sheet.getRows();i++){
                             XlsDataBean xs=new XlsDataBean();
                            for(int j=0;j<sheet.getColumns();j++){
                                Cell cl=sheet.getCell(j,i);
                                Object data="";
                                if(!cl.getContents().equals("")||!cl.getContents().isEmpty()){
                                       data=cl.getContents();
                                }
                                
                                if(0==j){
                                xs.setCompany(data+"");
                                }
                                if(1==j){
                                    xs.setMassage(data+"");
                                    }
                                if(2==j){
                                    xs.setOther(data+"");
                                    }
                                if(3==j){
                                    xs.setCompanyzw(data+"");
                                    }
                                if(4==j){
                                    xs.setAdress1(data+"");
                                    }
                            }
                            arr.add(xs);
                        }
                    } catch (BiffException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                     int num=0;
                     File f=new File("C:\\Users\\User\\Desktop\\out.txt");
                     PrintStream pf=null;
                     try {
                         if(!f.exists()){
                             f.createNewFile();
                         }
                        pf =new PrintStream(f);
                        //System.setOut(pf);
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }finally{
                        if(pf!=null){
                            try {
                                pf.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                     for(XlsDataBean date:arr){
                            System.out.println(date.getCompany()+","+date.getMassage());
                        }
                     */
    //=================================POI 方式==========================================
                String datevalue="";
                POIFSFileSystem fs=null;
                HSSFCell cell = null;
                FileInputStream file=null;
                
                    try {
                    file=new FileInputStream(filePath);
                    fs = new POIFSFileSystem(file);
                     HSSFWorkbook wwb = new HSSFWorkbook(fs);
                      HSSFSheet sheet = wwb.getSheetAt(0);
                      for(int rowIndex=0;rowIndex<=sheet.getLastRowNum();rowIndex++){
                          XlsDataBean xb=new XlsDataBean();
                          HSSFRow row = sheet.getRow(rowIndex);
                          if (row == null)continue;
                          for(short columnIndex=0;columnIndex<=row.getLastCellNum();columnIndex++){
                              cell = row.getCell(columnIndex);
                              if(cell!=null){
                                  cell.setEncoding(HSSFCell.ENCODING_UTF_16);
                                  /*
                                   * 不同单元格类型取值
                                   */
                                  switch(cell.getCellType()){
                                  case HSSFCell.CELL_TYPE_STRING:
                                      datevalue=cell.getStringCellValue();
                                      break;
                                  case HSSFCell.CELL_TYPE_NUMERIC:
                                      datevalue=cell.getCellNum()+"";
                                      break;
                                  case HSSFCell.CELL_TYPE_FORMULA:
                                      // 导入时如果为公式生成的数据则无值
                                      if (!cell.getStringCellValue().equals("")) {
                                          datevalue = cell.getStringCellValue();
                                      } else {
                                          datevalue = cell.getNumericCellValue() + "";
                                      }
                                      break;
                                  case HSSFCell.CELL_TYPE_BOOLEAN:
                                      datevalue = (cell.getBooleanCellValue() == true ? "Y":"N");
                                      break;
                                  case HSSFCell.CELL_TYPE_BLANK:
                                      break;
                                  case HSSFCell.CELL_TYPE_ERROR:
                                      datevalue = "";
                                      break;
                                  default:
                                      datevalue = "";
                                  }
                              }
                              /*
                               * 根据单元格内容赋值
                               */
                              switch(columnIndex){
                              case 0:
                                  xb.setCompany(datevalue);
                                  break;
                              case 1:
                                  xb.setMassage(datevalue);
                                  break;
                              case 2:
                                  xb.setName(datevalue);
                                  break;
                              case 3:
                                  xb.setOther(datevalue);
                                  break;
                              case 4:
                                  xb.setCompanyzw(datevalue);
                                  break;
                              case 5:
                                  xb.setAdress1(datevalue);
                                  break;
                              }
                            
                          }
                          list.add(xb);
                          
                      }
                      System.out.println(sheet.getLastRowNum()+"--");
                      
                      for(XlsDataBean date:list){
                            System.out.println(date.getCompany()+","+date.getMassage()+","+date.getName());
                        }
                     File f=new File("F:"+File.separator+"outdata.txt");
                     if(!f.exists()){
                         f.createNewFile();
                     }
                     BufferedOutputStream  bos=new BufferedOutputStream (new FileOutputStream(f));
                     DataOutputStream bs=new DataOutputStream(bos);
                     for(XlsDataBean date:list){
                            String bsdata=date.getCompany()+","+date.getMassage()+","+date.getName();
                             bs.flush();
                             bs.writeUTF(bsdata+"\r\n");
                     }
                    /*  HSSFRow row = sheet.getRow(0);
                      HSSFCell ccell = row.getCell((short) 0);
                      String mssg = ccell.getStringCellValue();
                      System.out.println(mssg);*/
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }finally{
                        if(file!=null){
                            try {
                                file.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                }
                
            }
        });
        btnNewButton.setBounds(294, 60, 93, 23);
        frame.getContentPane().add(btnNewButton);
        return list;
    }
}

0 0