当前位置: 首页 > news >正文

网站后台建设 招聘梧州吧

网站后台建设 招聘,梧州吧,app商城软件,外贸公司网站建设哪家好简介 Apache POI是一个用于操作Microsoft Office格式文件#xff08;包括xls、docx、xlsx、pptx等#xff09;的Java API库。POI全称为Poor Obfuscation Implementation#xff0c;是Apache Software Foundation的一个开源项目。它提供了一组Java API#xff0c;使得Java程…简介 Apache POI是一个用于操作Microsoft Office格式文件包括xls、docx、xlsx、pptx等的Java API库。POI全称为Poor Obfuscation Implementation是Apache Software Foundation的一个开源项目。它提供了一组Java API使得Java程序可以读取、写入和操作Microsoft Office格式文件。 具体来说POI提供了以下几种主要的组件 HSSF用于读写Excel 97-2003格式的xls文件。XSSF用于读写Excel 2007格式的xlsx文件。SXSSF是Apache POI中用于处理大量数据的API它基于XSSF可以处理Excel 2007及以上版本的xlsx文件。SXSSF的特点在于它可以将大量数据分成多个部分进行处理从而减少内存的占用提高处理大量数据的效率。HWPF用于读写Word 97-2003格式的doc文件。XWPF用于读写Word 2007格式的docx文件。HSLF用于读写PowerPoint 97-2003格式的ppt文件。XSLF用于读写PowerPoint 2007格式的pptx文件。 这里先介绍使用Apache POI 如何操作excel 环境准备 Maven仓库 jdk1.8poi-3.9poi-ooxml-3.9poi-ooxml-schemas-3.9xmlbeans-2.6.0junit4.12joda-time-2.10.1 写入Excel文件 Excel 97-2003 和 2007的区别 文件格式不同 Excel 97-2003使用的是 .xls格式.xls格式采用二进制格式存储数据而Excel 2007使用的是 .xlsx格式。而.xlsx格式采用了基于XML的压缩文件格式。大小限制不同 Excel 97-2003的工作表大小限制为65536行、256列。Excel 2007的工作表大小限制为1048576行、16384列。 API介绍 Workbook表示一个Excel工作簿包括多个Sheet提供了创建Sheet、读取Sheet、写入Sheet等方法。Sheet表示一个Excel工作表包括多个Row提供了读取Row、写入Row、创建Cell等方法。Row表示Excel工作表中的一行包括多个Cell提供了读取Cell、写入Cell等方法。Cell表示Excel工作表中的一个单元格提供了读取单元格值、写入单元格值、设置单元格样式等方法。 小文件写入 注意代码中的 PATH 是声明的静态类变量是基础的文件路径 static String PATH D:\\poi\\; 03版本-小文件写入 //03版本-小数据写入Testpublic void testWrite03() throws IOException {/*** 1.创建一个03版的工作簿* HSSF-03版本* XSSF07版本* SXSSF-加速处理07版本*/Workbook workbook new HSSFWorkbook();/*** 2.创建一个工作表* 通过工作簿来新建工作表因为工作簿在工作表之上*/Sheet sheet workbook.createSheet(表1);/*** 3.创建一个行* 通过表创建行因为表在行之上* 0代表第一行*/Row row1 sheet.createRow(0);/*** 4.创建单元格* 通过行创建单元格*/Cell cell1_1 row1.createCell(0);//第一行第一列cell1_1.setCellValue(id);Cell cell1_2 row1.createCell(1);//第一行第二列cell1_2.setCellValue(name);Cell cell1_3 row1.createCell(2);//第一行第三列cell1_3.setCellValue(birth);//第二行Row row2 sheet.createRow(1);Cell cell2_1 row2.createCell(0);//第二行第一列cell2_1.setCellValue(1);Cell cell2_2 row2.createCell(1);//第二行第二列cell2_2.setCellValue(嘴哥);Cell cell2_3 row2.createCell(2);//第一行第三列//使用 joda包创建时间String time new DateTime().toString(yyyy-MM-dd);cell2_3.setCellValue(time);//生成一张表 03版本用 xls 结尾File file new File(PATH03_1.xls);FileOutputStream outputStream new FileOutputStream(file);//输出到本地workbook.write(outputStream);//关闭流outputStream.close();System.out.println(文件生成完毕!);} 运行结果  07版本-小文件写入  //07版本-小数据写入Testpublic void testWrite07() throws IOException {/*** 1.创建一个03版的工作簿* HSSF-03版本* XSSF07版本* SXSSF-加速处理07版本*/Workbook workbook new XSSFWorkbook();/*** 2.创建一个工作表* 通过工作簿来新建工作表因为工作簿在工作表之上*/Sheet sheet workbook.createSheet(表1);/*** 3.创建一个行* 通过表创建行因为表在行之上* 0代表第一行*/Row row1 sheet.createRow(0);/*** 4.创建单元格* 通过行创建单元格*/Cell cell1_1 row1.createCell(0);//第一行第一列cell1_1.setCellValue(id);Cell cell1_2 row1.createCell(1);//第一行第二列cell1_2.setCellValue(name);Cell cell1_3 row1.createCell(2);//第一行第三列cell1_3.setCellValue(birth);//第二行Row row2 sheet.createRow(1);Cell cell2_1 row2.createCell(0);//第二行第一列cell2_1.setCellValue(1);Cell cell2_2 row2.createCell(1);//第二行第二列cell2_2.setCellValue(嘴哥);Cell cell2_3 row2.createCell(2);//第一行第三列//使用 joda包创建时间String time new DateTime().toString(yyyy-MM-dd);cell2_3.setCellValue(time);//生成一张表 03版本用 xls 结尾File file new File(PATH03_1.xlsx);FileOutputStream outputStream new FileOutputStream(file);//输出到本地workbook.write(outputStream);//关闭流outputStream.close();System.out.println(文件生成完毕!);} 运行结果 大文件写入 03版本-大文件写入 //03版本-大数据写入65536行 1400msTestpublic void testWrite03BigData() throws IOException {//开始时间long begin System.currentTimeMillis();//创建一个工作簿Workbook workbook new HSSFWorkbook();//创建表Sheet sheet workbook.createSheet();//写入数据for (int rowNums 0; rowNums 65536; rowNums) {Row row sheet.createRow(rowNums);for (int cellNums 0; cellNums 10; cellNums) {Cell cell row.createCell(cellNums);cell.setCellValue(cellNums);}}System.out.println(over);FileOutputStream outputStream new FileOutputStream(new File(PATH bigData03.xls));workbook.write(outputStream);outputStream.close();//结束时间long end System.currentTimeMillis();System.out.println(总用时 (end-begin)ms);} 07版本-大文件写入 //07版本-大数据写入65537行 6856msTestpublic void testWrite07BigData() throws IOException {//开始时间long begin System.currentTimeMillis();//创建一个工作簿Workbook workbook new XSSFWorkbook();//创建表Sheet sheet workbook.createSheet();//写入数据for (int rowNums 0; rowNums 65537; rowNums) {Row row sheet.createRow(rowNums);for (int cellNums 0; cellNums 10; cellNums) {Cell cell row.createCell(cellNums);cell.setCellValue(cellNums);}}System.out.println(over);FileOutputStream outputStream new FileOutputStream(new File(PATH bigData03.xlsx));workbook.write(outputStream);outputStream.close();//结束时间long end System.currentTimeMillis();System.out.println(总用时 (end-begin)ms);} 运行结果 07升级版-大文件写入 //07升级版-大数据写入10w行 1814msTestpublic void testWrite07BigDataS() throws IOException {//开始时间long begin System.currentTimeMillis();//创建一个工作簿Workbook workbook new SXSSFWorkbook();//创建表Sheet sheet workbook.createSheet();//写入数据for (int rowNums 0; rowNums 100000; rowNums) {Row row sheet.createRow(rowNums);for (int cellNums 0; cellNums 10; cellNums) {Cell cell row.createCell(cellNums);cell.setCellValue(cellNums);}}System.out.println(over);FileOutputStream outputStream new FileOutputStream(new File(PATH bigData03S.xlsx));workbook.write(outputStream);//关闭资源outputStream.close();//关闭临时文件((SXSSFWorkbook)workbook).dispose();//结束时间long end System.currentTimeMillis();System.out.println(总用时 (end-begin)ms);} 总结 HSSF适用于读写Excel 97-2003格式的xls文件可以处理一般大小的数据缺点是处理大量数据时会占用大量内存导致程序运行较慢。XSSF适用于读写Excel 2007及以上版本的xlsx文件支持更多的行列数、更好的样式支持等但处理大量数据时仍然会占用大量内存不适合处理大数据量的情况。SXSSF基于XSSF适用于处理大量数据可以将大量数据分成多个部分进行处理从而减少内存的占用提高处理大量数据的效率。但不支持公式计算等高级功能。 综上选择API应根据具体的需求和数据量来决定。如果处理的数据量较小可以选择HSSF或XSSF如果需要处理大量数据可以选择SXSSF。如果需要同时兼顾处理大量数据和高级功能可以考虑使用HSSF或XSSF与SXSSF结合的方式来处理数据。 03版-文件读取 Testpublic void testRead03() throws IOException {//获取文件流FileInputStream inputStream new FileInputStream(new File(PATH03_1.xls));//1.创建一个工作簿,使用excel能操作的它都可以操作Workbook workbook new HSSFWorkbook(inputStream);//2.获取表Sheet sheet0 workbook.getSheetAt(0);//3.得到行Row row sheet0.getRow(1);//获取第1行//4.得到列Cell cell row.getCell(0);//获取第一行第一列//以Number形式输出-可以选择格式//必须对应格式-number类型不可以转为String类型System.out.println(cell.getNumericCellValue());//关闭流资源inputStream.close();} 07版本-文件读取 Testpublic void testRead07() throws IOException {//获取文件流FileInputStream inputStream new FileInputStream(new File(PATH03_1.xlsx));//1.创建一个工作簿,使用excel能操作的它都可以操作Workbook workbook new XSSFWorkbook(inputStream);//2.获取表Sheet sheet0 workbook.getSheetAt(0);//3.得到行Row row sheet0.getRow(1);//获取第1行//4.得到列Cell cell row.getCell(0);//获取第一行第一列//以Number形式输出-可以选择格式//必须对应格式-number类型不可以转为String类型System.out.println(cell.getNumericCellValue());//关闭流资源inputStream.close();} 不同类型数据的读取 针对字符串、数值类型、日期等需要不同的处理方式。 //测试读取不同类型的数据 03版本Testpublic void testCellType() throws IOException {FileInputStream inputStream new FileInputStream(new File(PATHtest03.xls));Workbook workbook new HSSFWorkbook(inputStream);Sheet sheet workbook.getSheetAt(0);//读取标题内容Row title sheet.getRow(0);if (title ! null){int columns title.getPhysicalNumberOfCells();//列数for (int cellNum 0; cellNum columns; cellNum) {Cell cell title.getCell(cellNum);if (cell ! null){int cellType cell.getCellType();//我们已知为StringString cellValue cell.getStringCellValue();System.out.print(cellValue | );}}System.out.println();}//读取表中的内容int rows sheet.getPhysicalNumberOfRows();//行数for (int rowNum 1; rowNum rows; rowNum) {Row row sheet.getRow(rowNum);if (row ! null){//读取行中的列int columns title.getPhysicalNumberOfCells();for (int col 0; col columns; col) {System.out.print([(rowNum1)-(col1)]);Cell cell row.getCell(col);//匹配列的数据类型if (cell ! null){int cellType cell.getCellType();String cellValue ;switch (cellType){case HSSFCell.CELL_TYPE_STRING://字符串System.out.print([STRING]);cellValue cell.getStringCellValue();break;case HSSFCell.CELL_TYPE_NUMERIC://数字(日期、数字)if (HSSFDateUtil.isCellDateFormatted(cell)){//日期System.out.print([DATE]);Date date cell.getDateCellValue();cellValue new DateTime(date).toString(yyyy-MM-dd);}else{System.out.print([NUMBER]);//防止数字过长,转为Stringcell.setCellType(HSSFCell.CELL_TYPE_STRING);cellValue cell.toString();}break;case HSSFCell.CELL_TYPE_BLANK://空System.out.print([NULL]);break;case HSSFCell.CELL_TYPE_BOOLEAN://布尔System.out.print([BOOLEAN]);cellValue String.valueOf(cell.getBooleanCellValue());case HSSFCell.CELL_TYPE_ERROR:System.out.print([ERROR]);cellValue String.valueOf(cell.getErrorCellValue());break;}System.out.println(cellValue);}}}}inputStream.close();}
http://www.hkea.cn/news/14280016/

相关文章:

  • 国内十大网站制作公司如何创建自己的商城
  • 郑州公司网站建设做网站需要编程吗
  • 北京网站设计公司兴田德润简介哈尔滨网站建设方案策划
  • 中国品牌网站官网手机端开发工具
  • 有哪些可以做包装袋的网站漕泾网站建设
  • 中国建设银行网站用户深圳网站建设深icp备
  • 查找网站域名泰安网络推广公司平台
  • 基本网站建设语言网站建设特效大全
  • 济南网站开发企业中小型企业网络建设
  • 广州网站建设电话专业英文网站建设
  • 浙江网站建设自助建站优化青岛网站建设有限公司
  • cms wordpress 国内杭seo网站建设排名
  • 网站 文件服务器如何在电子商务化平台上做企业网站推广
  • 海南省旅游专业网站发展电子商务缺乏强大的专业产业资源做后盾网站建设子栏目怎么弄
  • 如何转移网站深圳租赁住房和建设局网站
  • 网站优化策略分析论文东莞房价下跌最惨一览表
  • 珠海网站建设 金碟空间设计和室内设计的区别
  • 饰品电子商务网站的建设wordpress录播
  • 网站开发常用问题东莞城乡建设网站
  • p图做网站兼职网页链接视频怎么下载到本地
  • 无锡网站建设报价明细表做细分行业信息网站
  • 网站添加漂浮二维码怎么做网站推广员是什么
  • 目前做网站wordpress建站
  • 做企业网站要怎么设计方案江西省建设工程协会网站查询
  • html网站尺寸免费个人域名邮箱
  • 手机网站建设软件有哪些内容低价网站建设顺德
  • 网站开发中网页之间的链接形式网站的产品图片怎样做清晰
  • 太原论坛网站开发公司制作一个景点的网站
  • 网站经营网络备案信息管理系统wordpress 可视化编辑
  • 营销网站找什么公司做黄骅港防疫办电话