话不多说,先上代码:
注意:这种写法只能压缩一个excel表
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
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;
public class createexcel {
public static void main(String[] args) {
OutputStream os = null;
ZipOutputStream zipos = null;
try {
Workbook wb = new SXSSFWorkbook(100);
Date now1 = new Date();
//定义数据总量
long numcount = 3000000;
//定义每页数据有多少条
int pagesize = 10000;
System.out.println("打印数据总量为:"+numcount);
//获取页数
int pagenum = 0;
if(numcount % pagesize > 0) {
pagenum = (int) ((numcount/pagesize) + 1);
}else {
pagenum = (int) (numcount/pagesize);
}
//循环打印数据
for(int m = 0;m 0) {
if(m<(pagenum-1)) {
for(int j = 0;j
300w条数据,单单导出到excel表,大小是77m左右,如果压缩为zip,大小为3.8m,还是挺有效率的。
同时,在导出为excel表的时候,也试着导出9000w条数据,时间大概是970秒,excel文件大小是2g,但是有个问题,excel表无法打开。不知道是什么原因。



