java导出多sheet的excel

csv无法多sheet,JavaPOI导出excel有三种形式:HSSFworkbook,XSSFworkbook,SXSSFworkbook
区别如下:
https://blog.csdn.net/weixin_45631654/article/details/119457460?spm=1001.2014.3001.5502

本次示例是XSSFworkbook,
注意:单元格的限制是32767个字符,超出会报错导出失败。

依赖如下:

   <properties>
      <spring.version>4.3.19.RELEASE</spring.version>
        <poi.version>3.16</poi.version>
    </properties>
    <dependencies>
       <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>${poi.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>${poi.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>${poi.version}</version>
        </dependency>
   </dependencies>

代码如下:

package csv;


import org.apache.poi.xssf.usermodel.*;

import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class POITEST {
    public static void main(String[] args) {
        try {
            //excel导出的路径和名称
            OutputStream out = new FileOutputStream("/home/quyanhang/Downloads/test.xlsx");
            //生成两个sheet,不同的数据源和列标题
            List<List<Object>> data1 = new ArrayList<>();
            List<List<Object>> data2 = new ArrayList<>();
            String[] headers1 = {"编号", "年龄", "用户名"};
            String[] headers2 = {"编号", "用户名"};
            HashMap<String, String[]> header = new HashMap<>();
            header.put("表单-1", headers1);
            header.put("表单-2", headers2);
            //注意int等其他类型转换成String类型
            //表单-2的数据内容
            for (int i = 1; i < 5; i++) {
                List rowData = new ArrayList();
                rowData.add(String.valueOf(i));
                rowData.add(String.valueOf(i + 20));
                rowData.add("曲" + i + "号");
                data1.add(rowData);
            }
            //表单-1的数据内容
            for (int i = 1; i < 5; i++) {
                List rowData = new ArrayList();
                rowData.add(String.valueOf(i));
                rowData.add("曲" + i + "号");
                data2.add(rowData);
            }

            XSSFWorkbook workbook = new XSSFWorkbook();
            HashMap<String, List<List<Object>>> map = new HashMap<>();
            map.put("表单-1", data1);
            map.put("表单-2", data2);
            int a = 0;
            for (String key : map.keySet()) {
                System.out.println(key);
                System.out.println(a);
                exportExcel(workbook, a, key, header.get(key), map.get(key), out);
                a = a + 1;
            }
            workbook.write(out);
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    /**
     * @param workbook
     * @param sheetNum   sheet的位置,0表示第一个表格中的第一个sheet
     * @param sheetTitle sheet的名称
     * @param headers    标题
     * @param result     内容
     * @param out        输出流
     */
    public static void exportExcel(XSSFWorkbook workbook, int sheetNum,
                                   String sheetTitle, String[] headers, List<List<Object>> result,
                                   OutputStream out) throws Exception {
        // 生成一个表格
        XSSFSheet sheet = workbook.createSheet();
        workbook.setSheetName(sheetNum, sheetTitle);

        // 设置表格默认列宽度为20个字节
        sheet.setDefaultColumnWidth((short) 20);
        // 产生表格标题行
        XSSFRow row = sheet.createRow(0);
        for (int i = 0; i < headers.length; i++) {
            XSSFCell cell = row.createCell((short) i);
            XSSFRichTextString text = new XSSFRichTextString(headers[i]);
            cell.setCellValue(text.toString());
        }
        // 遍历集合数据,产生数据行
        if (result != null) {
            int index = 1;
            for (List<Object> m : result) {
                row = sheet.createRow(index);
                int cellIndex = 0;
                for (Object str : m) {
                    XSSFCell cell = row.createCell((short) cellIndex);
                    cell.setCellValue(str.toString());
                    cellIndex++;
                }
                index++;
            }
        }

    }

}

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
的方法是什么? 你可以使用Apache POI库来实现Java导出excelsheet的功能。 首先,你需要创建一个工作簿对象,然后创建要添加到该工作簿的工作表对象。 通过调用工作簿对象的createSheet()方法来创建多个工作表对象。 接着,你可以使用工作表对象的setCellValue()方法来设置单元格的值。 最后,将工作簿对象写入输出流中,以将excel文件保存到本地磁盘或Web浏览器中。 以代码为例,实现Java导出excelsheet的方法如下: ``` try { // 创建工作簿对象 Workbook workbook = new XSSFWorkbook(); // 创建第一个工作表对象并命名 Sheet sheet1 = workbook.createSheet("Sheet 1"); // 创建第二个工作表对象并命名 Sheet sheet2 = workbook.createSheet("Sheet 2"); // 在第一个工作表中添加数据 Row row1 = sheet1.createRow(0); row1.createCell(0).setCellValue("Name"); row1.createCell(1).setCellValue("Age"); Row row2 = sheet1.createRow(1); row2.createCell(0).setCellValue("John"); row2.createCell(1).setCellValue(30); // 在第二个工作表中添加数据 Row row3 = sheet2.createRow(0); row3.createCell(0).setCellValue("City"); row3.createCell(1).setCellValue("State"); Row row4 = sheet2.createRow(1); row4.createCell(0).setCellValue("New York"); row4.createCell(1).setCellValue("NY"); // 将工作簿对象写入输出流中 FileOutputStream fileOut = new FileOutputStream("workbook.xlsx"); workbook.write(fileOut); fileOut.close(); System.out.println("Excel文件导出成功!"); } catch (Exception e) { e.printStackTrace(); } ``` 请注意,上述示例代码仅用于演示如何使用Apache POI库来实现Java导出excelsheet的方法。 在实际生产场景中,你需要根据具体需求进行适当的调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值