您的位置:首页 > 科技 > 能源 > 门户型网站_网站网络广告推广_中国培训网官网_今天的新闻内容

门户型网站_网站网络广告推广_中国培训网官网_今天的新闻内容

2024/12/21 20:00:27 来源:https://blog.csdn.net/m0_46615310/article/details/144611720  浏览:    关键词:门户型网站_网站网络广告推广_中国培训网官网_今天的新闻内容
门户型网站_网站网络广告推广_中国培训网官网_今天的新闻内容

目录

    • pom.xml
    • ExcelWriteTest .java

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.smy</groupId><artifactId>smy-poi</artifactId><version>1.0-SNAPSHOT</version><!--导入依赖--><dependencies><!-- Java 万物皆对象 --><!--xls(03版本)--><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.9</version></dependency><!--xlsx(07版本)--><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.9</version></dependency><!--日期格式化工具--><!-- 比Java官方的utils.date好用 --><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId><version>2.10.1</version></dependency><!--junit--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>RELEASE</version><scope>compile</scope></dependency></dependencies></project>

ExcelWriteTest .java

package com.smy;import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
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.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.joda.time.DateTime;
import org.junit.jupiter.api.Test;import java.io.FileOutputStream;
import java.io.IOException;/*** Description:POI写测试* Author:smy* Date: 2024/12/17 17:19*/
public class ExcelWriteTest {//copy absolute path 后不要忘记最后要加双斜杠,否则路径不对String PATH = "D:\\practise\\PoiExcelTestSuite\\smy-poi\\";@Testpublic void testWrite03() throws IOException {//1、创建一个工作簿Workbook workbook = new HSSFWorkbook();//2、创建一个工作表(工作簿中包含工作表,通过工作簿来创建工作表)Sheet sheet = workbook.createSheet("sheetTest1");//默认为缺省值,可以创建名称//3、创建一个行Row row1 = sheet.createRow(0);//4、创建一个单元格(1,1)Cell cell11 = row1.createCell(0);cell11.setCellValue("smy111");//(1,2)Cell cell12 = row1.createCell(1);//bool类型cell12.setCellValue(true);//第二行Row row2 = sheet.createRow(1);//(2,1)Cell cell21 = row2.createCell(0);cell21.setCellValue("统计时间");//(2,2)Cell cell22 = row2.createCell(1);String time = new DateTime().toString("yyyy-MM-dd HH:mm:ss");cell22.setCellValue(time);//生成一张表(本质是IO操作,IO流)  03 版本使用xls结尾FileOutputStream fileOutputStream = new FileOutputStream(PATH + "观众统计表03.xls");//输出workbook.write(fileOutputStream);//关闭流fileOutputStream.close();System.out.println("观众统计表03 生成完毕!");}@Testpublic void testWrite07() throws IOException {//1、创建一个工作簿 07版本,与03仅对象不同,面向接口编程的好处,对象变了,接口不用变,代码不用改//!注意对象的区别以及文件后缀!Workbook workbook = new XSSFWorkbook();//2、创建一个工作表(工作簿中包含工作表,通过工作簿来创建工作表)Sheet sheet = workbook.createSheet("sheetTest1");//默认为缺省值,可以创建名称//3、创建一个行Row row1 = sheet.createRow(0);//4、创建一个单元格(1,1)Cell cell11 = row1.createCell(0);cell11.setCellValue("第一行第一个单元格值为smy111");//(1,2)Cell cell12 = row1.createCell(1);cell12.setCellValue("第一行第二个单元格值为smy222");//(1,5)Cell cell15 = row1.createCell(4);cell15.setCellValue("测试布尔类型");//第二行Row row2 = sheet.createRow(1);//(2,1)Cell cell21 = row2.createCell(0);cell21.setCellValue("统计时间");//(2,2)Cell cell22 = row2.createCell(1);String time = new DateTime().toString("yyyy-MM-dd HH:mm:ss");cell22.setCellValue(time);//(2,5)Cell cell25 = row2.createCell(4);cell25.setCellType(XSSFCell.CELL_TYPE_BOOLEAN);cell25.setCellValue(true);//生成一张表(本质是IO操作,IO流)  07 版本使用xlsx结尾FileOutputStream fileOutputStream = new FileOutputStream(PATH + "观众统计表07.xlsx");//输出workbook.write(fileOutputStream);//关闭流fileOutputStream.close();System.out.println("观众统计表07 生成完毕!");}@Testpublic void testWrite03BigData() throws IOException {//记录时间差long beginTime = System.currentTimeMillis();System.out.println("开始时间:" + beginTime);//创建一个工作簿Workbook workbook = new HSSFWorkbook();//创建一个工作表Sheet sheet = workbook.createSheet("smy测试表1");//循环创建行(03版本 行数范围:0~65535)//缺点:最多只能处理65536行,否则会抛出异常:java.lang.IllegalArgumentException: Invalid row number (65536) outside allowable range (0..65535)for (int rowNum = 0; rowNum < 65536; rowNum++){Row row = sheet.createRow(rowNum);//每一行创建十个单元格并赋值for(int cellNum = 0; cellNum < 10; cellNum++){Cell cell = row.createCell(cellNum);cell.setCellValue(cellNum);}}System.out.println("over");//输出流FileOutputStream fileOutputStream = new FileOutputStream(PATH + "testWrite03BigData.xls");workbook.write(fileOutputStream);//关闭流fileOutputStream.close();long endTime = System.currentTimeMillis();System.out.println("结束时间:" + endTime);//可能有小数,所以转成double类型,除以一千以秒形式展示System.out.println("生成excel表所需要的时间:" + (double)(endTime - beginTime)/1000);}//耗时较长!优化:考虑使用缓存---->XSSF---->SXSSF@Testpublic void testWrite07BigData() throws IOException {//记录时间差long beginTime = System.currentTimeMillis();System.out.println("开始时间:" + beginTime);//创建一个工作簿Workbook workbook = new XSSFWorkbook();//创建一个工作表Sheet sheet = workbook.createSheet("smy测试表1");//循环创建行(07版本 行数不限,但是同样的65565耗时比03版本的长很多)for (int rowNum = 0; rowNum < 100000; rowNum++){Row row = sheet.createRow(rowNum);//每一行创建十个单元格并赋值for(int cellNum = 0; cellNum < 10; cellNum++){Cell cell = row.createCell(cellNum);cell.setCellValue(cellNum);}}System.out.println("over");//输出流FileOutputStream fileOutputStream = new FileOutputStream(PATH + "testWrite07BigData.xlsx");workbook.write(fileOutputStream);//关闭流fileOutputStream.close();long endTime = System.currentTimeMillis();System.out.println("结束时间:" + endTime);//可能有小数,所以转成double类型,除以一千以秒形式展示System.out.println("生成excel表所需要的时间:" + (double)(endTime - beginTime)/1000);//问:POI能否加速?     SXSSF}//使用缓存来加快速度@Testpublic void testWrite07BigDataS() throws IOException {//记录时间差long beginTime = System.currentTimeMillis();System.out.println("开始时间:" + beginTime);//创建一个工作簿,S:superWorkbook workbook = new SXSSFWorkbook();//创建一个工作表Sheet sheet = workbook.createSheet("smy测试表1");//循环创建行(十万条数据,使用SXSSF比XSSF快多了)for (int rowNum = 0; rowNum < 100000; rowNum++){Row row = sheet.createRow(rowNum);//每一行创建十个单元格并赋值for(int cellNum = 0; cellNum < 10; cellNum++){Cell cell = row.createCell(cellNum);cell.setCellValue(cellNum);}}System.out.println("over");//输出流FileOutputStream fileOutputStream = new FileOutputStream(PATH + "testWrite07BigDataS.xlsx");workbook.write(fileOutputStream);//关闭流fileOutputStream.close();//清除临时文件!((SXSSFWorkbook) workbook).dispose();long endTime = System.currentTimeMillis();System.out.println("结束时间:" + endTime);//可能有小数,所以转成double类型,除以一千以秒形式展示System.out.println("生成excel表所需要的时间:" + (double)(endTime - beginTime)/1000);}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com