JXL和POI导出数据方式的比较
POI支持excel2003和2007,而jxl只支持excel2003。
下面为测试代码:
- public class TestCondition {
-
-
- public static final int RECORD_COUNT = 21000;
-
-
- public static final String TEMPLATE_FILE = "E:/MyKernelPlatformWorkspace/Template/query_order.xls";
-
-
- public static final String JXL_TARGET_FILE_NAME = "E:/MyKernelPlatformWorkspace/Template/target/jxl_order.xls";
-
-
- public static final String POI_TARGET_FILE_NAME = "E:/MyKernelPlatformWorkspace/Template/target/poi_order.xls";
-
-
- public static final String JXL_TEMP_DIR = "E:/MyKernelPlatformWorkspace/Template/temp";
-
- }
然后在此测试条件下编写JXL和POI的测试类,首先是JXL的
- public class JXLExcel {
-
-
- private static final int start_row = 3;
-
- private WorkbookSettings settings;
-
- private File target;
-
- public JXLExcel() {
- this.settings = new WorkbookSettings();
-
-
- settings.setUseTemporaryFileDuringWrite(true);
- settings.setTemporaryFileDuringWriteDirectory(new File(TestCondition.JXL_TEMP_DIR));
-
- this.target = new File(TestCondition.JXL_TARGET_FILE_NAME);
- }
-
- public void execute() throws Exception {
-
-
- Workbook template = Workbook.getWorkbook(new File(TestCondition.TEMPLATE_FILE));
-
- WritableWorkbook worbook = Workbook.createWorkbook(target, template, settings);
-
-
- WritableSheet sheet = worbook.getSheet(0);
-
- Random random = new Random();
-
-
- for(int i = 0;i < TestCondition.RECORD_COUNT;i++) {
- int row = i + start_row;
- sheet.insertRow(row);
-
- Label col1 = new Label(0, row, String.valueOf(i + 1));
- Label col2 = new Label(1, row, String.valueOf(random.nextLong()));
- Label col3 = new Label(2, row, String.valueOf(random.nextLong()));
- Label col4 = new Label(3, row, "merchant" + (i +1));
- jxl.write.Number col5 = new Number(4, row, random.nextDouble());
- jxl.write.Number col6 = new Number(5, row, random.nextDouble());
- jxl.write.Number col7 = new Number(6, row, random.nextDouble());
- jxl.write.Number col8 = new Number(7, row, random.nextDouble());
- Label col9 = new Label(8, row, String.valueOf(random.nextLong()));
- Label col10 = new Label(9, row, "PAY");
- Label col11 = new Label(10, row, "POS");
- Label col12 = new Label(11, row, "2010-09-03 12:45:13");
- Label col13 = new Label(12, row, "2010-09-09 12:45:13");
- Label col14 = new Label(13, row, "interface" + (i + 1));
- Label col15 = new Label(14, row, "18701001830");
- Label col16 = new Label(15, row, "ccbc");
- Label col17 = new Label(16, row, String.valueOf(random.nextLong()));
- Label col18 = new Label(17, row, String.valueOf(random.nextLong()));
- jxl.write.Number col19 = new Number(18, row, random.nextDouble());
- jxl.write.Number col20 = new Number(19, row, random.nextDouble());
- Label col21 = new Label(20, row, "payer" + (i + 1));
- Label col22 = new Label(21, row, String.valueOf(random.nextLong()));
- Label col23 = new Label(22, row, "192.168.1.1");
- Label col24 = new Label(23, row, "192.168.1.1");
-
- sheet.addCell(col1);
- sheet.addCell(col2);
- sheet.addCell(col3);
- sheet.addCell(col4);
- sheet.addCell(col5);
- sheet.addCell(col6);
- sheet.addCell(col7);
- sheet.addCell(col8);
- sheet.addCell(col9);
- sheet.addCell(col10);
- sheet.addCell(col11);
- sheet.addCell(col12);
- sheet.addCell(col13);
- sheet.addCell(col14);
- sheet.addCell(col15);
- sheet.addCell(col16);
- sheet.addCell(col17);
- sheet.addCell(col18);
- sheet.addCell(col19);
- sheet.addCell(col20);
- sheet.addCell(col21);
- sheet.addCell(col22);
- sheet.addCell(col23);
- sheet.addCell(col24);
- }
-
- worbook.write();
- worbook.close();
- }
-
- }
执行Main函数
- public class JXLMain {
-
-
- public static void main(String[] args) throws Exception {
-
- long jxlStart = System.currentTimeMillis();
- JXLExcel jxl = new JXLExcel();
- jxl.execute();
- long jxlStop = System.currentTimeMillis();
- System.out.println("jxl takes : " + (jxlStop - jxlStart)/1000 + " seconds.");
-
- }
然后是POI的
public class POIExcel {
执行Main函数
- public class POIMain {
-
-
- public static void main(String[] args) throws Exception {
-
- long jxlStart = System.currentTimeMillis();
- POIExcel poi = new POIExcel();
- poi.execute();
- long jxlStop = System.currentTimeMillis();
- System.out.println("poi takes : " + (jxlStop - jxlStart)/1000 + " seconds.");
- }
-
- }
转:http://tianwenbo.iteye.com/blog/1485654
Java导出数据为EXCEL的两种方式JXL和POI
原文:http://www.cnblogs.com/xijin-wu/p/5628927.html