参考链接:
1. 引入pom依赖
<dependencies> <!--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> <!--日期格式化工具--> <dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <version>2.10.1</version> </dependency> <!--test--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies>
2. 写入excel
步骤:工作薄---工作表---行---列
2.1 HSSFWorkbook写入2003版xls格式excel(最多65535条)
package excel;
import cn.hutool.core.date.DateTime;
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 java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
/**
* @ClassName HssfWrite
* @Description TODO
* @Author Jiangnan Cui
* @Date 2023/3/5 10:24
* @Version 1.0
*/
public class HssfWrite {
public static void main(String[] args) {
String path = "D:\\excel\\poi\\";
// 1. 创建一个工作薄
Workbook workbook = new HSSFWorkbook();
// 2. 在工作簿中创建一个工作表
Sheet sheet = workbook.createSheet("xls-test");
// 3.在工作表中创建第1行
Row row1 = sheet.createRow(0);
// 在第1行创建第11单元格
Cell cell11 = row1.createCell(0);
// 在11单元格写入数据
cell11.setCellValue("小崔");
// 在第1行创建第12单元格
Cell cell12 = row1.createCell(1);
// 在12单元格写入数据
cell12.setCellValue("加油");
// 4.在工作表中创建第2行
Row row2 = sheet.createRow(1);
// 在第2行创建第21单元格
Cell cell21 = row2.createCell(0);
// 在21单元格写入数据
cell21.setCellValue(new DateTime().toString("yyyy-MM-dd HH:mm:ss"));
// 在第2行创建第22单元格
Cell cell22 = row2.createCell(1);
// 在22单元格写入数据
cell22.setCellValue(new DateTime().toString("yyyy-MM-dd HH:mm:ss"));
try {
// 5.创建文件输出流
FileOutputStream fos = new FileOutputStream(path + "03.xls");
// 6.将工作薄写入文件
workbook.write(fos);
// 7.关闭流
fos.close();
System.out.println("03版excel写入完毕!");
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
2.1.1 大数据写入(最多65535条)
package excel;
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 java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* @ClassName HssfWriteBigData
* @Description TODO
* @Author Jiangnan Cui
* @Date 2023/3/5 10:59
* @Version 1.0
*/
public class HssfWriteBigData {
public static void main(String[] args) throws IOException {
String path = "D:\\excel\\poi\\";
// 时间
long begin = System.currentTimeMillis();
// 创建一个工作簿
Workbook workbook = new HSSFWorkbook();
// 创建一个表
Sheet sheet = workbook.createSheet();
// 写入数据
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 fos = new FileOutputStream(path +"big-03.xls");
workbook.write(fos);
// 关闭流
fos.close();
System.out.println("03版excel写入成功");
long end=System.currentTimeMillis();
System.out.println("总耗时:"+(double)(end-begin)/1000);
}
}
2.2 XSSFWorkbook写入2007版xlsx格式excel(最多20万条)
package excel;
import cn.hutool.core.date.DateTime;
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.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* @ClassName HssfWrite
* @Description TODO
* @Author Jiangnan Cui
* @Date 2023/3/5 10:24
* @Version 1.0
*/
public class XssfWrite {
public static void main(String[] args) {
String path = "D:\\excel\\poi\\";
// 1. 创建一个工作薄
Workbook workbook = new XSSFWorkbook();
// 2. 在工作簿中创建一个工作表
Sheet sheet = workbook.createSheet("xlsx-test");
// 3.在工作表中创建第1行
Row row1 = sheet.createRow(0);
// 在第1行创建第11单元格
Cell cell11 = row1.createCell(0);
// 在11单元格写入数据
cell11.setCellValue("小崔");
// 在第1行创建第12单元格
Cell cell12 = row1.createCell(1);
// 在12单元格写入数据
cell12.setCellValue("加油");
// 4.在工作表中创建第2行
Row row2 = sheet.createRow(1);
// 在第2行创建第21单元格
Cell cell21 = row2.createCell(0);
// 在21单元格写入数据
cell21.setCellValue(new DateTime().toString("yyyy-MM-dd HH:mm:ss"));
// 在第2行创建第22单元格
Cell cell22 = row2.createCell(1);
// 在22单元格写入数据
cell22.setCellValue(new DateTime().toString("yyyy-MM-dd HH:mm:ss"));
try {
// 5.创建文件输出流
FileOutputStream fos = new FileOutputStream(path + "07.xlsx");
// 6.将工作薄写入文件
workbook.write(fos);
// 7.关闭流
fos.close();
System.out.println("07版excel写入完毕!");
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
2.2.1 大数据写入(最多20万条)
package excel;
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.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* @ClassName HssfWriteBigData
* @Description TODO
* @Author Jiangnan Cui
* @Date 2023/3/5 10:59
* @Version 1.0
*/
public class XssfWriteBigData {
public static void main(String[] args) throws IOException {
String path = "D:\\excel\\poi\\";
// 时间
long begin = System.currentTimeMillis();
// 创建一个工作簿
Workbook workbook = new XSSFWorkbook();
// 创建一个表
Sheet sheet = workbook.createSheet();
// 写入数据
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 fos = new FileOutputStream(path +"big-07.xlsx");
workbook.write(fos);
// 关闭流
fos.close();
System.out.println("07版excel写入成功");
long end=System.currentTimeMillis();
System.out.println("总耗时:"+(double)(end-begin)/1000);
}
}
1244

被折叠的 条评论
为什么被折叠?



