JAVA报表开发-JXL处理EXCEL

1、使用jxl导出基本知识点

通过WritableWorkbook,WritableSheet,Label这三个对象我们就可以实现Excel文件的导出工作。

1、 创建可写入的Excel工作薄

WritableWorkbook workbook= Workbook.createWorkbook(输出流);

2、创建工作表

WritableSheet sheet= workbook.createSheet(工作表的名称, 工作表的索引值);

3、创建单元格

添加文本类单元格

Label labelC = new Label(列索引值, 行索引值, "单元格中的内容");

sheet.addCell(labelC);

4、写入到文件

workbook.write();// 写入数据

5、释放资源:

workbook.close();// 关闭文件

2、案例

/**
     * 使用jxl导出EXCEL
     * //编号 姓名 手机号 入职日期 现住址
     * @param response
     */
    public void downLoadByJxl(HttpServletResponse response) throws Exception {

        ServletOutputStream outputStream = response.getOutputStream();
        //创建一个工作薄(excel 文件)
        WritableWorkbook workbook = Workbook.createWorkbook(outputStream);
        //sheet页的名字  第几个
        WritableSheet sheet = workbook.createSheet("第一个sheet", 0);
        //处理标题 int col 列  , int row 行 , Label l 单元格的内容
        Label label = null;
        String[] titles = new String[]{"编号","姓名","手机号","入职日期","现住址"};
        for (int i=0;i<titles.length;i++) {
            label =new Label(i,0,titles[i]);
            sheet.addCell(label);
        }
        SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd");
        //设置列宽
        sheet.setColumnView(0,5); //第一个参数:列的索引值  第二个参数:1代表一个标准字母的宽度
        sheet.setColumnView(1,8); //第一个参数:列的索引值  第二个参数:1代表一个标准字母的宽度
        sheet.setColumnView(2,15); //第一个参数:列的索引值  第二个参数:1代表一个标准字母的宽度
        sheet.setColumnView(3,15); //第一个参数:列的索引值  第二个参数:1代表一个标准字母的宽度
        sheet.setColumnView(4,30); //第一个参数:列的索引值  第二个参数:1代表一个标准字母的宽度

        List<User> userList = userMapper.selectAll();

        int rowIndex = 1;
        for(User user:userList){
            sheet.addCell(new Label(0,rowIndex,user.getId().toString()));//列 行 编号
            sheet.addCell(new Label(1,rowIndex,user.getUserName()));//列 行 姓名
            sheet.addCell(new Label(2,rowIndex,user.getPhone()));//列 行 手机号
            sheet.addCell(new Label(3,rowIndex,simpleDateFormat.format(user.getHireDate())));//列 行 入职日期
            sheet.addCell(new Label(4,rowIndex,user.getAddress()));
            rowIndex++;
        }
        
        //文件导出 一个流(outputStream)两个头(文件的打开方式 in-line attachement, 文件的下载时mime类型)
        String filename="JXL嘻嘻.xls";
        response.setHeader("content-disposition","attachment;filename="+new String(filename.getBytes(),"ISO8859-1"));
        response.setContentType("application/vnd.ms-excel");
        workbook.write();
        workbook.close();
        outputStream.close();
    }

 

 

posted @ 2022-05-28 16:11  KwFruit  阅读(128)  评论(0编辑  收藏  举报