首页 > 代码库 > 生成和解析excel文件

生成和解析excel文件

package excel;


public class BookVO {

    public String bookName;
    
    public String bookAuthor;
    
    public String bookPrice;
    
    public String bookConcern;

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public String getBookAuthor() {
        return bookAuthor;
    }

    public void setBookAuthor(String bookAuthor) {
        this.bookAuthor = bookAuthor;
    }

    public String getBookPrice() {
        return bookPrice;
    }

    public void setBookPrice(String bookPrice) {
        this.bookPrice = bookPrice;
    }

    public String getBookConcern() {
        return bookConcern;
    }

    public void setBookConcern(String bookConcern) {
        this.bookConcern = bookConcern;
    }
    
    
}


生成excel文件:

package excel;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableImage;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
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;

/**
 * 生成excel文件
 * @author lizhiyong
 * @version $Id: ExcelOpt.java, v 0.1
		2014年8月5日 上午11:43:27 Exp $
 */
public class ExcelOpt {
    /**
    * 生成一个Excel文件 jxl
    * @param fileName 要生成的Excel文件名 
    * @jxl.jar 版本:2.6 
    */
    public static void writeExcel(String fileName) {
        WritableWorkbook wwb = null;
        try {
            //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象 
            wwb = Workbook.createWorkbook(new File(fileName));

        } catch (IOException e) {
            e.printStackTrace();
        }
        if (wwb != null) {
            //创建一个可写入的工作表 
            //Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置 
            WritableSheet ws = wwb.createSheet("工作表名称", 0);

            //下面开始添加单元格 
            for (int i = 0; i < 10; i++) {
                for (int j = 0; j < 5; j++) {
                    //这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行 
                    Label labelC = new Label(j, i, "这是第" + (i + 1) + "行,第" + (j + 1) + "列");
                    try {
                        //将生成的单元格添加到工作表中 
                        ws.addCell(labelC);
                    } catch (RowsExceededException e) {
                        e.printStackTrace();
                    } catch (WriteException e) {
                        e.printStackTrace();
                    }

                }
            }

            try {
                //从内存中写入文件中 
                wwb.write();
                //关闭资源,释放内存 
                wwb.close();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (WriteException e) {
                e.printStackTrace();
            }
        }
    }

    /** 
    * 生成一个Excel文件POI
    * @param inputFile 输入模板文件路径 
    * @param outputFile 输入文件存放于服务器路径 
    * @param dataList 待导出数据 
    * @throws Exception 
    * @roseuid: 
    */

    @SuppressWarnings({ "rawtypes", "deprecation" })
    public static void exportExcelFile(String inputFile, String outputFile, List dataList)
                                                                                          throws Exception {
        //用模板文件构造poi 
        POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(inputFile));
        //创建模板工作表 
        HSSFWorkbook templatewb = new HSSFWorkbook(fs);
        //直接取模板第一个sheet对象 
        HSSFSheet templateSheet = templatewb.getSheetAt(1);
        //得到模板的第一个sheet的第一行对象 为了得到模板样式 
        HSSFRow templateRow = templateSheet.getRow(0);

        //HSSFSheet timplateSheet = templatewb.getSheetAt(1); 
        //取得Excel文件的总列数 
        int columns = templateSheet.getRow((short) 0).getPhysicalNumberOfCells();
        // Debug.println("columns is : " + columns); //=========================
        //创建样式数组 
        HSSFCellStyle styleArray[] = new HSSFCellStyle[columns];

        //一次性创建所有列的样式放在数组里 
        for (int s = 0; s < columns; s++) {
            //得到数组实例 
            styleArray[s] = templatewb.createCellStyle();
        }
        //循环对每一个单元格进行赋值 
        //定位行 
        for (int rowId = 1; rowId < dataList.size(); rowId++) {
            //依次取第rowId行数据 每一个数据是valueList 
            List valueList = (List) dataList.get(rowId - 1);
            //定位列 
            for (int columnId = 0; columnId < columns; columnId++) {
                //依次取出对应与colunmId列的值 
                //每一个单元格的值 
                String dataValue = http://www.mamicode.com/(String) valueList.get(columnId);>


3、解析excel文件:

package excel;

import java.io.File;
import java.io.IOException;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

/**
 * 解析excel文件
 * @author lizhiyong
 * @version $Id: ReadExcel.java, v 0.1
		2014年8月5日 上午11:43:44 Exp $
 */
public class ReadExcel {
    /**读取Excel文件的内容 
    * @param file 待读取的文件 
    * @return 
    */
    public static String readExcel(File file) {
        StringBuffer sb = new StringBuffer();

        Workbook wb = null;
        try {
            //构造Workbook(工作薄)对象 
            wb = Workbook.getWorkbook(file);
        } catch (BiffException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        if (wb == null)
            return null;

        //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了 
        Sheet[] sheet = wb.getSheets();

        if (sheet != null && sheet.length > 0) {
            //对每个工作表进行循环 
            for (int i = 0; i < sheet.length; i++) {
                //得到当前工作表的行数 
                int rowNum = sheet[i].getRows();
                for (int j = 0; j < rowNum; j++) {
                    //得到当前行的所有单元格 
                    Cell[] cells = sheet[i].getRow(j);
                    if (cells != null && cells.length > 0) {
                        //对每个单元格进行循环 
                        for (int k = 0; k < cells.length; k++) {
                            //读取当前单元格的值 
                            String cellValue = http://www.mamicode.com/cells[k].getContents();>