java通过poi操作excel的大部分场景(仅考虑.xlsx扩展名)

1.对模板写入数据,并写入一个新的本地地址excel文件中。

例:第一行为id,日期1,日期2,日期3,日期4,日期5,日期6,日期7,日期8

注意:excel的行和列都从0开始,所以我代码是:从第二行开始,生成100行,8列的数据,第一列为id-count,后面的列为日期。切记关闭流,和栈一样,先定义的后关闭。不关会导致一直占用文件,在进行比如删除操作时报错。

InputStream in = method2.class.getResourceAsStream("/template/输出数据文件.xlsx");
XSSFWorkbook excel = new XSSFWorkbook(in);
XSSFSheet sheet1 = excel.getSheet("Sheet1");
int count = 1;
while(count < 100){
     XSSFRow row = sheet1.getRow(count);
         if (row == null) {
             row = sheet1.createRow(count);
             for (int i = 0; i < 8; i++) {
                 if (row.getCell(i) == null) {
                    row.createCell(i);
             }
         }
     }
    row.getCell(0).setCellValue(String.valueOf("id-" + count)); 
    row.getCell(1).setCellValue(String.valueOf(time1));   
    row.getCell(2).setCellValue(String.valueOf(time2)); 
    row.getCell(3).setCellValue(String.valueOf(time3)); 
    row.getCell(4).setCellValue(String.valueOf(time4)); 
    row.getCell(5).setCellValue(String.valueOf(time5));                     
    row.getCell(6).setCellValue(String.valueOf(time6));     
    row.getCell(7).setCellValue(String.valueOf(time7));    
    count++;                                
}
//写入文件
FileOutputStream out = new FileOutputStream("D:\\输出数据文件" + UUID.randomUUID().toString().replaceAll("-","") + ".xlsx");
            excel.write(out);
            excel.close();
            in.close();

2.对模板写入数据,并给前端下载。

前面代码都一样,最后写入文件那里改一下

改为:其实就是写出到通过response.getOutputStream()得到ServletOutputStream,写出到这里。切记关闭流,和栈一样,先定义的后关闭。

            //写出
            ServletOutputStream outputStream = response.getOutputStream();
            excel.write(outputStream);
            excel.write(out);
            in.close();

3.生成excel,保存到项目的recourse目录下,关于如何输出到前端,看上面就好。

        生成excel:

        //初始化
        // 创建Excel文件
        XSSFWorkbook wk = new XSSFWorkbook();
        // 创建一张工作表
        XSSFSheet sheet = wk.createSheet("info");
        // 设置列宽
        sheet.setColumnWidth(0, 5000);
        // 创建一行(表头)
        XSSFRow row = sheet.createRow(0);

        // 创建第一行的首部单元格,并设置值,可以不设置,看自己实际情况,但是需要创建单元格。
        for (int i = 0; i < length; i++) {
            row.createCell((short) i - 1).setCellValue();
        }
        //将文件输出到resource的templateFiles文件夹下。
        String s1 = XXXapplication.GetSourcePath()+ "templateFiles\\";
        FileOutputStream out = new FileOutputStream(new File(s1 + "fileName.xlsx"));
        wk.write(out);
        out.close();
        wk.close();

关于为何一定要设置单元格,参考文章java使用poi操作excel时报错:“org.apache.poi.xssf.usermodel.XSSFRow.getCell(int)“ because “row“ is null-CSDN博客

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Apache POI库可以轻松地读取Excel文件。下面是一个使用XSSFWorkbook类读取.xlsx文件的示例代码: ```java import java.io.File; import java.io.FileInputStream; import java.io.IOException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ReadExcel { public static void main(String[] args) { try { // 读取文件 File file = new File("data.xlsx"); FileInputStream inputStream = new FileInputStream(file); // 创建工作簿对象 XSSFWorkbook workbook = new XSSFWorkbook(inputStream); // 获取第一个工作表 org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheetAt(0); // 循环读取每一行数据 for (Row row : sheet) { // 循环读取每一个单元格数据 for (Cell cell : row) { // 输出单元格内容 System.out.print(cell.toString() + "\t"); } System.out.println(); } // 关闭输入流 inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 这个程序将打开名为“data.xlsx”的文件,并将其读取到XSSFWorkbook对象中。然后,它获取工作表中的第一个工作表,并使用循环遍历每一行和每一个单元格,输出单元格的内容。最后,它关闭输入流。 请注意,此示例代码需要添加Apache POI库的依赖项。您可以在Maven中添加以下依赖项: ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值