zoukankan      html  css  js  c++  java
  • java excel两种操作方式

    原文https://www.cnblogs.com/wangyang108/p/6030420.html

    Excel是我们平时工作中比较常用的用于存储二维表数据的,JAVA也可以直接对Excel进行操作,在这篇博客中将为大家介绍两种操作Excel的方式,分别为:jxlpoi

    对于两者的区别网上有测试如下:

    测试结果 

    类型   数据量(行)   执行时间(ms)   执行时间(ms)   执行时间(ms)   平均时间(ms) 
    POI   1000       579       562       532       558 
    JXL   1000       500       469       484       484 
    POI   5000       984       984       969       979 
    JXL   5000       922       860       890       891 
    POI   10000      1609      1594      1641       1615 
    JXL   10000        1437      1453      1406       1432 
    POI   30000      3782      3765      3828       3792 
    JXL   30000      3922      3906      3922       3917 
    POI   50000      5953      6484      5859       6099 
    JXL   50000      6765      7421      6984       7057 

     小数据量时jxl快于poi,在大数据量时poi要快于jxl。但差距都不明显。

    (一)jxl

    写Excel

    import java.io.File;
    import java.io.IOException;
    
    import jxl.Workbook;
    import jxl.write.Label;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;
    import jxl.write.WriteException;
    
    /**
     * jxl写Excel
     * 
     * @author jianggujin
     * 
     */
    public class JxlWriteDemo
    {
       public static void main(String[] args) throws IOException, WriteException
       {
          File xlsFile = new File("jxl.xls");
          // 创建一个工作簿
          WritableWorkbook workbook = Workbook.createWorkbook(xlsFile);
          // 创建一个工作表
          WritableSheet sheet = workbook.createSheet("sheet1", 0);
          for (int row = 0; row < 10; row++)
          {
             for (int col = 0; col < 10; col++)
             {
                // 向工作表中添加数据
                sheet.addCell(new Label(col, row, "data" + row + col));
             }
          }
          workbook.write();
          workbook.close();
       }
    }

    读Excel

    import java.io.File;
    import java.io.IOException;
    
    import jxl.Sheet;
    import jxl.Workbook;
    import jxl.read.biff.BiffException;
    
    /**
     * jxl读excel
     * 
     * @author jianggujin
     * 
     */
    public class JxlReadDemo
    {
       public static void main(String[] args) throws BiffException, IOException
       {
          File xlsFile = new File("jxl.xls");
          // 获得工作簿对象
          Workbook workbook = Workbook.getWorkbook(xlsFile);
          // 获得所有工作表
          Sheet[] sheets = workbook.getSheets();
          // 遍历工作表
          if (sheets != null)
          {
             for (Sheet sheet : sheets)
             {
                // 获得行数
                int rows = sheet.getRows();
                // 获得列数
                int cols = sheet.getColumns();
                // 读取数据
                for (int row = 0; row < rows; row++)
                {
                   for (int col = 0; col < cols; col++)
                   {
                      System.out.printf("%10s", sheet.getCell(col, row)
                            .getContents());
                   }
                   System.out.println();
                }
             }
          }
          workbook.close();
       }
    }

    (二)poi

    写Excel

    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    
    /**
     * Poi写Excel
     * 
     * @author jianggujin
     * 
     */
    public class PoiWriteDemo
    {
       public static void main(String[] args) throws IOException
       {
          // 创建工作薄
          HSSFWorkbook workbook = new HSSFWorkbook();
          // 创建工作表
          HSSFSheet sheet = workbook.createSheet("sheet1");
    
          for (int row = 0; row < 10; row++)
          {
             HSSFRow rows = sheet.createRow(row);
             for (int col = 0; col < 10; col++)
             {
                // 向工作表中添加数据
                rows.createCell(col).setCellValue("data" + row + col);
             }
          }
    
          File xlsFile = new File("poi.xls");
          FileOutputStream xlsStream = new FileOutputStream(xlsFile);
          workbook.write(xlsStream);
       }
    }

    读Excel

    import java.io.File;
    import java.io.IOException;
    
    import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.ss.usermodel.Sheet;
    import org.apache.poi.ss.usermodel.Workbook;
    import org.apache.poi.ss.usermodel.WorkbookFactory;
    
    /**
     * Poi写Excel
     * 
     * @author jianggujin
     * 
     */
    public class PoiReadDemo
    {
       public static void main(String[] args) throws IOException,
             InvalidFormatException
       {
          File xlsFile = new File("poi.xls");
          // 获得工作簿
          Workbook workbook = WorkbookFactory.create(xlsFile);
          // 获得工作表个数
          int sheetCount = workbook.getNumberOfSheets();
          // 遍历工作表
          for (int i = 0; i < sheetCount; i++)
          {
             Sheet sheet = workbook.getSheetAt(i);
             // 获得行数
             int rows = sheet.getLastRowNum() + 1;
             // 获得列数,先获得一行,在得到改行列数
             Row tmp = sheet.getRow(0);
             if (tmp == null)
             {
                continue;
             }
             int cols = tmp.getPhysicalNumberOfCells();
             // 读取数据
             for (int row = 0; row < rows; row++)
             {
                Row r = sheet.getRow(row);
                for (int col = 0; col < cols; col++)
                {
                   System.out.printf("%10s", r.getCell(col).getStringCellValue());
                }
                System.out.println();
             }
          }
       }
    }
  • 相关阅读:
    kubernetes容器编排系统介绍
    whistle--全新的跨平台web调试工具
    深刻理解 React (一) ——JSX和虚拟DOM
    理想的互联网服务后台框架的九个要点
    gerrit的使用笔记
    Ubuntu 使用unzip解压乱码的问题
    ibus-libpinyin 无法选择除第一个外的候选词
    vscode Git:failed to execute git
    C Primer Plus 创建友好的输入界面 笔记
    Git学习笔记---安装与初始化 连接远程版本库
  • 原文地址:https://www.cnblogs.com/duneF/p/8372251.html
Copyright © 2011-2022 走看看