POI:数据批量导出、按模板导出

Action或者Servlet中

Workbook wb=new HSSFWorkbook();

 String headers[]={"编号","姓名","电话","Email","QQ"};
ResultSet rs=userDao.userList(con, null);
ExcelUtil.fillExcelData(rs, wb, headers);

ResponseUtil.export(ServletActionContext.getResponse(), wb, "导出excel.xls");


public static void fillExcelData(ResultSet rs,Workbook wb,String[] headers)throws Exception{
        int rowIndex=0;
        Sheet sheet=wb.createSheet();
        Row row=sheet.createRow(rowIndex++);
        for(int i=0;i<headers.length;i++){
            row.createCell(i).setCellValue(headers[i]);
        }
        while(rs.next()){
            row=sheet.createRow(rowIndex++);
            for(int i=0;i<headers.length;i++){
                row.createCell(i).setCellValue(rs.getObject(i+1).toString());
            }
        }
    }




public static void export(HttpServletResponse response,Workbook wb,String fileName)throws Exception{
        response.setHeader("Content-Disposition", "attachment;filename="+new String(fileName.getBytes("utf-8"),"iso8859-1"));
        response.setContentType("application/ynd.ms-excel;charset=UTF-8");
        OutputStream out=response.getOutputStream();
        wb.write(out);//这是利用Response,可以利用Action的下载功能,就需要转换输出流到输入流
        out.flush();
        out.close();
    }











利用模板导出

Workbook wb=ExcelUtil.fillExcelDataWithTemplate(userDao.userList(con, null), "userExporTemplate.xls");
ResponseUtil.export(ServletActionContext.getResponse(), wb, "利用模版导出excel.xls");


public static Workbook fillExcelDataWithTemplate(ResultSet rs,String templateFileName)throws Exception{
        InputStream inp=ExcelUtil.class.getResourceAsStream("/com/java1234/template/"+templateFileName);
        POIFSFileSystem fs=new POIFSFileSystem(inp);
        Workbook wb=new HSSFWorkbook(fs);
        Sheet sheet=wb.getSheetAt(0);
        // 获取列数
        int cellNums=sheet.getRow(0).getLastCellNum();
        int rowIndex=1;
        while(rs.next()){
            Row row=sheet.createRow(rowIndex++);
            for(int i=0;i<cellNums;i++){
                row.createCell(i).setCellValue(rs.getObject(i+1).toString());
            }
        }
        return wb;
    }


以下是使用Java代码批量导出Word模板的一种实现方式: 1. 首先,您需要使用Apache POI库来操作Word文档。您可以通过Maven或手动下载POI库并将其添加到您的项目中。 2. 接下来,您需要编写代码来打开一个Word文档并将其另存为模板。以下是一个简单的示例: ```java import java.io.*; import org.apache.poi.xwpf.usermodel.*; public class WordTemplateExporter { public static void main(String[] args) { try { // 打开Word文档 FileInputStream fis = new FileInputStream("source.docx"); XWPFDocument doc = new XWPFDocument(fis); // 另存为模板 FileOutputStream fos = new FileOutputStream("template.dotx"); doc.write(fos); // 关闭流 fos.close(); fis.close(); doc.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 3. 如果您需要批量导出多个模板,可以使用循环来遍历待处理的文件列表,并将上述代码包装在循环内。例如: ```java import java.io.*; import java.util.*; import org.apache.poi.xwpf.usermodel.*; public class WordTemplateExporter { public static void main(String[] args) { try { // 待处理的文件列表 List<String> files = Arrays.asList("file1.docx", "file2.docx", "file3.docx"); // 遍历文件列表 for (String file : files) { // 打开Word文档 FileInputStream fis = new FileInputStream(file); XWPFDocument doc = new XWPFDocument(fis); // 另存为模板 String templateName = file.replace(".docx", ".dotx"); FileOutputStream fos = new FileOutputStream(templateName); doc.write(fos); // 关闭流 fos.close(); fis.close(); doc.close(); } } catch (IOException e) { e.printStackTrace(); } } } ``` 请注意,上述示例可能需要根据您的具体需求进行调整。例如,您可能需要添加异常处理、文件路径处理等代码来确保程序的稳定性和正确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值