导出到excel; 读取excel数据

该代码示例展示了如何在Java中使用ApachePOI库创建一个Excel文件,设置列宽、标题和内容,并通过HTTP响应输出。同时,也提供了读取MultipartFile对象中的Excel文件内容的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//导出
List<String> headers = Arrays.asList("#", "#", "#", "#");

response.setHeader("content-type", "application/octet-stream");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode("SKU" + DateUtil.getCurrentDateByFormat("yyyyMMddHHmmss") + ".xlsx", "UTF-8"));

//创建工作薄
SXSSFWorkbook wb = new SXSSFWorkbook();
//样式
CellStyle style = wb.createCellStyle();
style.setAlignment(HorizontalAlignment.CENTER); // 创建一个居中格式
//字体样式
Font fontStyle = wb.createFont();
fontStyle.setFontName("微软雅黑");
fontStyle.setFontHeightInPoints((short) 12);
style.setFont(fontStyle);
//新建sheet
SXSSFSheet sheet1 = wb.createSheet("Sheet1");
//设置每列的列宽
sheet1.setColumnWidth(0, 5000);
sheet1.setColumnWidth(1, 5000);
sheet1.setColumnWidth(2, 10000);
sheet1.setColumnWidth(3, 5000);
sheet1.setColumnWidth(4, 10000);
sheet1.setColumnWidth(5, 10000);
//写标题
SXSSFRow rowFirst1 = sheet1.createRow(0);
for (int i = 0, size = headers.size(); i < size; i++) {
    SXSSFCell cell = rowFirst1.createCell(i); //获取第一行的每个单元格
    cell.setCellStyle(style); //加样式
    cell.setCellValue(headers.get(i)); //往单元格里写数据
}
for (int i = 0, size = xxx.size(); i < size; i++) {
    SXSSFRow rows = sheet1.createRow(i+1);
    for (int j = 0; j <=5;j++)
    {
        SXSSFCell cell = rows.createCell(j); //获取第一行的每个单元格
        cell.setCellStyle(style); //加样式
        switch(j){
            case 0:
                cell.setCellValue(i+1);
                break;
            case 1:
                cell.setCellValue(xxx.get(i).getxxx());
                break;
            case 2:
                cell.setCellValue(xxx.get(i).getxxx());
                break;
            case 3:
                cell.setCellValue(xxx.get(i).getxxx());
                break;
            case 4:
                cell.setCellValue(xxx.get(i).getxxx());
                break;
            case 5:
                cell.setCellValue(xxx.get(i).getxxx());
                break;
        }

    }
}
@Cleanup ServletOutputStream outputStream = null;
try {
    outputStream = response.getOutputStream();
    wb.write(outputStream);
} catch (IOException e) {
    e.printStackTrace();
    throw e;
} finally {
    wb.close();
    if (outputStream != null) {
        outputStream.close();
    }
}

//读取

public void readExcel(MultipartFile file) {
    InputStream inputStream = null;
    try {
        inputStream = file.getInputStream();
    } catch (IOException e) {
        throw new BusinessMallException("文件读取失败");
    }
    ExcelReader reader = ExcelUtil.getReader(inputStream, 0);
    List<List<Object>> mapList = reader.read();

    for (int rownum = 2; rownum < mapList.size(); rownum++) {
        for (int i = 0, size = mapList.get(rownum).size(); i < size; i++) {
            switch (i) {
                case 0:
                    xxx.setxxx(mapList.get(rownum).get(0));
                    break;
                case 1:
                    xxx.setxxx(mapList.get(rownum).get(1));
                    break;
                case 2:
                    xxx.setxxx(mapList.get(rownum).get(3));
                    break;
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值