JAVA解析Excel

来源:互联网 发布:二维码生成打印软件 编辑:程序博客网 时间:2024/06/16 09:58

一.Excel解析的几种实现方式
1.JXL(较少使用)
2.POI(常用)
3.FastExcel(基本不用)

二.实例
1.JXL生成导出Excel(先导入jxl的包 )

package com.tiglle.jxl;import java.io.File;import jxl.Workbook;import jxl.write.Label;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;public class JxlTestOut{    public static void main(String[] args) {        //创建Excel文件        File file = new File("e:/jxl_excel.xls");        try {            //创建工作薄            WritableWorkbook workbook = Workbook.createWorkbook(file);            //创建sheet页            WritableSheet sheet = workbook.createSheet("sheet名称", 0);            //一格Label代表一格,用列y和行x定位。new Label(列y,行x,"标题0");            Label label0 = new Label(0,0,"标题0");            Label label1 = new Label(1,0,"标题1");            Label label2 = new Label(2,0,"标题2");            sheet.addCell(label0);            sheet.addCell(label1);            sheet.addCell(label2);            //第二行数据            Label label3 = new Label(0,1,"内容0");            Label label4 = new Label(1,1,"内容1");            Label label5 = new Label(2,1,"内容2");            sheet.addCell(label3);            sheet.addCell(label4);            sheet.addCell(label5);            //写入内容            workbook.write();            //关闭流            workbook.close();        } catch (Exception e) {            // TODO: handle exception        }    }}jxl_excel.xls:标题0 标题1 标题2内容0 内容1 内容2

2.JXL解析导入Excel

package com.tiglle.jxl;import java.io.File;import jxl.Cell;import jxl.Sheet;import jxl.Workbook;public class JxlTestIn {    public static void main(String[] args) {        try {            //指定Excel文件            File file = new File("E://jxl_excel.xls");            //创建WorkBook            Workbook workbook = Workbook.getWorkbook(file);            //获取工作表sheet页(从第0页开始)            Sheet sheet0 = workbook.getSheet(0);            //获取第一页sheet中的数据            //getCell(y,x);            Cell cell00 = sheet0.getCell(0, 0);            System.out.println(cell00.getContents());            Cell cell10 = sheet0.getCell(1, 0);            System.out.println(cell10.getContents());            //关闭流            workbook.close();        } catch (Exception e) {        }    }}结果:标题0标题1

3.POI生成导出Excle

package com.tiglle.poi;import java.io.File;import java.io.FileOutputStream;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.ss.usermodel.Cell;public class PoiTestOut {    public static void main(String[] args) {        //创建Excel工作薄        HSSFWorkbook workbook = new HSSFWorkbook();        //创建一个sheet页        HSSFSheet sheet0 = workbook.createSheet("第一页");        //创建第一行标题行,从0开始        HSSFRow row0 = sheet0.createRow(0);        //创建第一行的第一格(第一列)        Cell cell00 = row0.createCell(0);        //设置y0,x0的内容(y,x)        cell00.setCellValue("标题0");        //创建第一行的第二格        Cell cell01 = row0.createCell(1);        //设置y0,x1的内容        cell01.setCellValue("标题1");        //创建第一行的第三格        Cell cell02 = row0.createCell(2);        //设置y0,x2的内容        cell02.setCellValue("标题2");        //创建第二行的内容行        HSSFRow row1 = sheet0.createRow(1);        //第二行第一格        Cell cell10 = row1.createCell(0);        //设置y1,x0的内容        cell10.setCellValue("内容0");        //第二行第二格        Cell cell11 = row1.createCell(1);        //设置y1,x1的内容        cell11.setCellValue("内容1");        //第二行第一格        Cell cell12 = row1.createCell(2);        //设置y1,x2的内容        cell12.setCellValue("内容2");        //创建第二个sheet页..        HSSFSheet sheet1 = workbook.createSheet("第二页");        try {            //创建Excel文件,并将内容写入(如果路径包含不存在的文件夹,必须创建,不然包找不到文件异常)            File file = new File("E://poi_excel.xls");            file.createNewFile();            //通过文件输出流将内容写入文件            FileOutputStream outStream = new FileOutputStream(file);            //将内容写入            workbook.write(outStream);            //关闭流            outStream.close();            workbook.close();        } catch (Exception e) {            e.printStackTrace();        }    }}

4.POI解析Excel

package com.tiglle.poi;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;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;public class PoiTestIn {    public static void main(String[] args) {        try {            //指定一个Excel文件            File file = new File("E://poi_excel.xls");            //创建Excel,读取文件内容            InputStream inputStream = new FileInputStream(file);            HSSFWorkbook workbook = new HSSFWorkbook(inputStream);            //获取指定sheet页(两种方式)            //1.通过sheetName获取            //HSSFSheet sheet = workbook.getSheet("第一页");            //2.通过索引(页数)获取(从0开始)            HSSFSheet sheet = workbook.getSheetAt(0);            //获取第一行            HSSFRow row0 = sheet.getRow(0);            //获取第一行的第一格(y,x)            HSSFCell cell00 = row0.getCell(0);            //获取内容            String content = cell00.getStringCellValue();            System.out.println(content);            //获取第二行            HSSFRow row1 = sheet.getRow(1);            //获取第二行的第一格(y,x)            HSSFCell cell10 = row1.getCell(0);            //获取内容            String content1 = cell10.getStringCellValue();            System.out.println(content1);            //获取sheet中最后一行行号            int lastRowNum = sheet.getLastRowNum();            //获取一行最后一格号            int lastCellNum = row1.getLastCellNum();            System.out.println("lastRowNum="+lastRowNum+",lastCellNum="+lastCellNum);            //关闭流            workbook.close();            inputStream.close();        } catch (Exception e) {        }    }}

5.POI生成和解析高版本的Excel(xlsx后缀结尾)
生出导出:

package com.tiglle.poi;import java.io.File;import java.io.FileOutputStream;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.xssf.usermodel.XSSFRow;import org.apache.poi.xssf.usermodel.XSSFSheet;import org.apache.poi.xssf.usermodel.XSSFWorkbook;/** * 生成高版本你的Excel(xlsx后缀结尾) * 低版本使用的HSSF,高版本使用XSSF * @author Administrator * */public class PoiHeightVersionExcelOut {    public static void main(String[] args) {        //创建Excel工作薄                XSSFWorkbook workbook = new XSSFWorkbook();                //创建一个sheet页                XSSFSheet sheet0 = workbook.createSheet("第一页");                //创建第一行标题行,从0开始                XSSFRow row0 = sheet0.createRow(0);                //创建第一行的第一格(第一列)                Cell cell00 = row0.createCell(0);                //设置y0,x0的内容(y,x)                cell00.setCellValue("标题0");                //创建第一行的第二格                Cell cell01 = row0.createCell(1);                //设置y0,x1的内容                cell01.setCellValue("标题1");                //创建第一行的第三格                Cell cell02 = row0.createCell(2);                //设置y0,x2的内容                cell02.setCellValue("标题2");                //创建第二行的内容行                XSSFRow row1 = sheet0.createRow(1);                //第二行第一格                Cell cell10 = row1.createCell(0);                //设置y1,x0的内容                cell10.setCellValue("内容0");                //第二行第二格                Cell cell11 = row1.createCell(1);                //设置y1,x1的内容                cell11.setCellValue("内容1");                //第二行第一格                Cell cell12 = row1.createCell(2);                //设置y1,x2的内容                cell12.setCellValue("内容2");                //创建第二个sheet页..                XSSFSheet sheet1 = workbook.createSheet("第二页1");                try {                    //创建Excel文件,并将内容写入(如果路径包含不存在的文件夹,必须创建,不然包找不到文件异常)                    File file = new File("E://poi_excel1.xlsx");                    file.createNewFile();                    //通过文件输出流将内容写入文件                    FileOutputStream outStream = new FileOutputStream(file);                    //将内容写入                    workbook.write(outStream);                    //关闭流                    outStream.close();                    workbook.close();                } catch (Exception e) {                    e.printStackTrace();                }    }}

解析读取

package com.tiglle.poi;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import org.apache.poi.xssf.usermodel.XSSFCell;import org.apache.poi.xssf.usermodel.XSSFRow;import org.apache.poi.xssf.usermodel.XSSFSheet;import org.apache.poi.xssf.usermodel.XSSFWorkbook;/** * 解析高版本你的Excel(xlsx后缀结尾) * 低版本使用的HSSF,高版本使用XSSF * @author Administrator * */public class PoiHeightVersionExcelIn {    public static void main(String[] args) {        try {            //指定一个Excel文件            File file = new File("E://poi_excel.xlsx");            //创建Excel,读取文件内容            InputStream inputStream = new FileInputStream(file);            XSSFWorkbook workbook = new XSSFWorkbook(inputStream);            //获取指定sheet页(两种方式)            //1.通过sheetName获取            //HSSFSheet sheet = workbook.getSheet("第一页");            //2.通过索引(页数)获取(从0开始)            XSSFSheet sheet = workbook.getSheetAt(0);            //获取第一行            XSSFRow row0 = sheet.getRow(0);            //获取第一行的第一格(y,x)            XSSFCell cell00 = row0.getCell(0);            //获取内容            String content = cell00.getStringCellValue();            System.out.println(content);            //获取第二行            XSSFRow row1 = sheet.getRow(1);            //获取第二行的第一格(y,x)            XSSFCell cell10 = row1.getCell(0);            //获取内容            String content1 = cell10.getStringCellValue();            System.out.println(content1);            //获取sheet中最后一行行号            int lastRowNum = sheet.getLastRowNum();            //获取一行最后一格号            int lastCellNum = row1.getLastCellNum();            System.out.println("lastRowNum="+lastRowNum+",lastCellNum="+lastCellNum);            //关闭流            workbook.close();            inputStream.close();        } catch (Exception e) {        }    }}结果:标题0内容0lastRowNum=1,lastCellNum=3