Java-Excel写与读

本文介绍如何使用ApachePOI库在Java程序中生成和操作Excel文件。详细展示了创建Excel工作表,设置单元格样式,填充数据的过程,并提供了导出Excel文件的方法。

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

很多时候,一个软件应用程序需要生成Microsoft Excel文件格式的报告。有时,一个应用程序甚至希望将Excel文件作为输入数据。例如,一个公司开发的应用程序将财务部门需要所有输出生成自己的Excel。

任何Java程序员愿意将MS Office文件的输出,可以使用预定义和只读API来做到。

什么是Apache POI?

Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS Office文件。这由Apache软件基金会开发使用Java分布式设计或修改Microsoft Office文件的开源库。它包含类和方法对用户输入数据或文件到MS Office文档进行解码。

Apache POI组件

Apache POI包含类和方法,来将MS Office所有OLE 2文档复合。此API组件的列表如下。

  • POIFS (较差混淆技术实现文件系统) : 此组件是所有其他POI元件的基本因素。它被用来明确地读取不同的文件。

  • HSSF (可怕的电子表格格式) : 它被用来读取和写入MS-Excel文件的xls格式。

  • XSSF (XML格式) : 它是用于MS-Excel中XLSX文件格式。

  • HPSF (可怕的属性设置格式) : 它用来提取MS-Office文件属性设置。

  • HWPF (可怕的字处理器格式) : 它是用来读取和写入MS-Word的文档扩展名的文件。

  • XWPF (XML字处理器格式) : 它是用来读取和写入MS-Word的docx扩展名的文件。

  • HSLF (可怕的幻灯片版式格式) : 它是用于读取,创建和编辑PowerPoint演示文稿。

  • HDGF (可怕的图表格式) : 它包含类和方法为MS-Visio的二进制文件。

  • HPBF (可怕的出版商格式) : 它被用来读取和写入MS-Publisher文件。




public HSSFWorkbook generateSheet(HSSFWorkbook wb, String sheetName, List<StaffDeclareInfoDO> list) { /*** 总记录数 **/ int listSize = list == null ? 0 : list.size(); HSSFSheet sheet = wb.createSheet(sheetName); HSSFCellStyle style = wb.createCellStyle(); style.setAlignment(HSSFCellStyle.ALIGN_CENTER); HSSFRow row = sheet.createRow(0); HSSFCell cell = row.createCell((short) 0); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue("序号"); cell = row.createCell((short) 1); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue("姓名"); cell = row.createCell((short) 2); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue("性别"); cell = row.createCell((short) 3); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue("手机"); cell = row.createCell((short) 4); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue("身份证号"); cell = row.createCell((short) 5); for (int i = 0; i < listSize; i++) { row = sheet.createRow(i + 1); StaffDeclareInfoDO data = list.get(i); cell = row.createCell((short) 0); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(data.getId()); cell = row.createCell((short) 1); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(data.getName()); cell = row.createCell((short) 2); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(data.getSex()); cell = row.createCell((short) 3); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(data.getMobile()); cell = row.createCell((short) 4); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(data.getCertificate()); } return wb; }


 public void export(HSSFWorkbook wb, HttpServletResponse response) {
    
        try {
           
            String tip = DateUtil.format(new Date(), DateUtil.shortFormat) + "";
            String name = "xxx" + tip;
            response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(name, "utf-8") + ".xls");
            OutputStream out = response.getOutputStream();
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            wb.write(baos);
            byte[] xlsBytes = baos.toByteArray();
            out.write(xlsBytes);
            out.close();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        
    }

 

 

转载于:https://www.cnblogs.com/qcxdoit/p/9927560.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值