java实现xls、csv文件导出或下载

原创 2016年06月01日 11:58:27

一般在java开发中需要下载xls或者是csv文件,需要在做报表或者是数据采集的时候需要,现将代码片段摘出:

public String exportMouldCsv() {
        OutputStream os = null;
        WritableWorkbook wbook = null;
        try {
            HttpServletResponse response = ServletActionContext.getResponse();
            // 取得输出流
            os = response.getOutputStream();
            // 清空输出流
            response.reset();
            // 设定输出文件头
            String fileName = "文件名设置.xls";
            fileName = new String(fileName.getBytes("GBK"), "iso-8859-1");
            response.setHeader("Content-disposition", "attachment; filename="
                    + fileName);
            // 定义输出类型
            response.setContentType("application/msexcel");
            // 建立excel文件
            wbook = Workbook.createWorkbook(os);

            WritableCellFormat cellFormat = new WritableCellFormat();
            cellFormat.setAlignment(jxl.format.Alignment.CENTRE);

            // WritableSheet.setColumnView(int i,int width)
            // 作用是指定第i+1列的宽度,比如:
            // 将第一列的宽度设为30
            // sheet.setColumnView(0,30)
            // wsheet.setRowView(0,10)
            WritableFont font1 = new WritableFont(WritableFont.TIMES, 10,
                    WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,
                    jxl.format.Colour.BLACK);
            WritableCellFormat cellFormat_top = new WritableCellFormat();
            cellFormat_top.setAlignment(jxl.format.Alignment.CENTRE);
            // 设置单元格背景颜色
            // cellFormat_top.setBackground(Colour.LIGHT_BLUE);
            // 设置字体格式
            cellFormat_top.setFont(font1);
            cellFormat_top.setBorder(jxl.format.Border.ALL,
                    jxl.format.BorderLineStyle.THIN);

            WritableCellFormat cellFormat_bottom = new WritableCellFormat();
            cellFormat_bottom.setBorder(jxl.format.Border.ALL,
                    jxl.format.BorderLineStyle.THIN);

            WritableCellFormat cellFormat_bottom_1 = new WritableCellFormat();
            // 设置居中
            cellFormat_bottom_1.setAlignment(jxl.format.Alignment.CENTRE);
            // 设置表格边框
            cellFormat_bottom_1.setBorder(jxl.format.Border.ALL,
                    jxl.format.BorderLineStyle.THIN);
            WritableSheet wsheet = wbook.createSheet("
            文件名设置", 0);

            wsheet.setRowView(0, 300);
            wsheet.setRowView(1, 300);
            wsheet.setColumnView(0, 10);
            wsheet.setColumnView(1, 20);
            wsheet.setColumnView(2, 15);
            wsheet.setColumnView(3, 15);
            wsheet.setColumnView(4, 15);
            wsheet.setColumnView(5, 15);
            wsheet.setColumnView(6, 20);
            wsheet.setColumnView(7, 30);
            //表头设置
            Label label_0 = new Label(0, 0, "组织");
            label_0.setCellFormat(cellFormat_top);
            wsheet.addCell(label_0);

            Label label_1 = new Label(1, 0, "代码");
            label_1.setCellFormat(cellFormat_top);
            wsheet.addCell(label_1);

            Label label_2 = new Label(2, 0, "名称");
            label_2.setCellFormat(cellFormat_top);
            wsheet.addCell(label_2);

            Label label_3 = new Label(3, 0, "年");
            label_3.setCellFormat(cellFormat_top);
            wsheet.addCell(label_3);

            Label label_4 = new Label(4, 0, "月");
            label_4.setCellFormat(cellFormat_top);
            wsheet.addCell(label_4);

            Label label_5 = new Label(5, 0, "项");
            label_5.setCellFormat(cellFormat_top);
            wsheet.addCell(label_5);

            Label label_6 = new Label(6, 0, "项名称");
            label_6.setCellFormat(cellFormat_top);
            wsheet.addCell(label_6);

            Label label_7 = new Label(7, 0, "数量");
            label_7.setCellFormat(cellFormat_top);
            wsheet.addCell(label_7);

            wbook.write();
        } catch (Exception e) {
            logger.error(e);
            e.printStackTrace();
        } finally {
            if (wbook != null) {
                try {
                    wbook.close();
                } catch (Exception e) {
                    logger.error(e);
                }
                wbook = null;
            }
            if (os != null) {
                try {
                    os.close();
                } catch (Exception e) {
                    logger.error(e);
                }
                os = null;
            }
        }
    }

还有一种情况就是将后台获取的数据以xls或者是csv格式为文件导出,方便打印或者是传阅等。

public String exportMouldCsv() {
        OutputStream os = null;
        WritableWorkbook wbook = null;
        try {
            HttpServletResponse response = ServletActionContext.getResponse();
            // 取得输出流
            os = response.getOutputStream();
            // 清空输出流
            response.reset();
            // 设定输出文件头
            String fileName = "文件名设置.xls";
            fileName = new String(fileName.getBytes("GBK"), "iso-8859-1");
            response.setHeader("Content-disposition", "attachment; filename="
                    + fileName);
            // 定义输出类型
            response.setContentType("application/msexcel");
            // 建立excel文件
            wbook = Workbook.createWorkbook(os);

            WritableCellFormat cellFormat = new WritableCellFormat();
            cellFormat.setAlignment(jxl.format.Alignment.CENTRE);

            // WritableSheet.setColumnView(int i,int width)
            // 作用是指定第i+1列的宽度,比如:
            // 将第一列的宽度设为30
            // sheet.setColumnView(0,30)
            // wsheet.setRowView(0,10)
            WritableFont font1 = new WritableFont(WritableFont.TIMES, 10,
                    WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,
                    jxl.format.Colour.BLACK);
            WritableCellFormat cellFormat_top = new WritableCellFormat();
            cellFormat_top.setAlignment(jxl.format.Alignment.CENTRE);
            // 设置单元格背景颜色
            // cellFormat_top.setBackground(Colour.LIGHT_BLUE);
            // 设置字体格式
            cellFormat_top.setFont(font1);
            cellFormat_top.setBorder(jxl.format.Border.ALL,
                    jxl.format.BorderLineStyle.THIN);

            WritableCellFormat cellFormat_bottom = new WritableCellFormat();
            cellFormat_bottom.setBorder(jxl.format.Border.ALL,
                    jxl.format.BorderLineStyle.THIN);

            WritableCellFormat cellFormat_bottom_1 = new WritableCellFormat();
            // 设置居中
            cellFormat_bottom_1.setAlignment(jxl.format.Alignment.CENTRE);
            // 设置表格边框
            cellFormat_bottom_1.setBorder(jxl.format.Border.ALL,
                    jxl.format.BorderLineStyle.THIN);
            WritableSheet wsheet = wbook.createSheet("
            文件名设置", 0);

            wsheet.setRowView(0, 300);
            wsheet.setRowView(1, 300);
            wsheet.setColumnView(0, 10);
            wsheet.setColumnView(1, 20);
            wsheet.setColumnView(2, 15);
            wsheet.setColumnView(3, 15);
            wsheet.setColumnView(4, 15);
            wsheet.setColumnView(5, 15);
            wsheet.setColumnView(6, 20);
            wsheet.setColumnView(7, 30);
            //表头设置
            Label label_0 = new Label(0, 0, "组织");
            label_0.setCellFormat(cellFormat_top);
            wsheet.addCell(label_0);

            Label label_1 = new Label(1, 0, "代码");
            label_1.setCellFormat(cellFormat_top);
            wsheet.addCell(label_1);

            Label label_2 = new Label(2, 0, "名称");
            label_2.setCellFormat(cellFormat_top);
            wsheet.addCell(label_2);

            Label label_3 = new Label(3, 0, "年");
            label_3.setCellFormat(cellFormat_top);
            wsheet.addCell(label_3);

            Label label_4 = new Label(4, 0, "月");
            label_4.setCellFormat(cellFormat_top);
            wsheet.addCell(label_4);

            Label label_5 = new Label(5, 0, "项");
            label_5.setCellFormat(cellFormat_top);
            wsheet.addCell(label_5);

            Label label_6 = new Label(6, 0, "项名称");
            label_6.setCellFormat(cellFormat_top);
            wsheet.addCell(label_6);

            Label label_7 = new Label(7, 0, "数量");
            label_7.setCellFormat(cellFormat_top);
            wsheet.addCell(label_7);

            //获取从后台获取数据,并赋值给对应的列值
            MList mList = goalService.getMaterielViewList(mat);
            if (null!=mList ) {
                for (int i = 0; i < matList.size(); i++) {
                    Materiel materiel=new Materiel();
                    materiel=matList.get(i);
                    Label label_00 = new Label(0, (i+1), materiel.getMvgr1()==null?"":materiel.getMvgr1());
                    label_00.setCellFormat(cellFormat_bottom_1);
                    wsheet.addCell(label_00);
                    Label label_01 = new Label(1, (i+1), materiel.getBezei()==null?"":materiel.getBezei());
                    label_01.setCellFormat(cellFormat_bottom_left);
                    wsheet.addCell(label_01);
                    .....
                    //后面是自己来咯!!
                }
            }

            wbook.write();
        } catch (Exception e) {
            logger.error(e);
            e.printStackTrace();
        } finally {
            if (wbook != null) {
                try {
                    wbook.close();
                } catch (Exception e) {
                    logger.error(e);
                }
                wbook = null;
            }
            if (os != null) {
                try {
                    os.close();
                } catch (Exception e) {
                    logger.error(e);
                }
                os = null;
            }
        }
    }
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java往csv文件中导出百万级数据

package com.hcycom.action; import java.io.BufferedReader; import java.io.File; import java.io...

Java 导出CSV文件及实现web下载CSV

本文主要介绍Java 导出CSV文件到本地及实现web下载CSV。 1.Java 导出CSV文件到本地 csvWriter: package com.csvio; import...

Java编程之CSV文件导入与导出的实现

年前在开发功能模块的时候用到了CSV文件导入导出,就此整理一下,便于大家参考。 导入导出功能很多时候用到的都是Excel文件,但是现在越来越多的使用了CSV文件进行此操作,它是一个纯文本文件,可以用...

java导出文件之Excel(CSV)下并以流形式输出

网上找太多,眼逗看累了。自己写个简单的  @Test     public void write(){     try {              // 创建CSV写对象 ...

java 导出csv文件

import java.io.BufferedWriter;import java.io.File;import java.io.FileOutputStream;import java.io.IOE...

http中的Content-Type

要学习content-type,必须事先知道它到底是什么,是干什么用的。 HTTP协议(RFC2616)采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、...

java 读写csv

javacsv是国外开发的一个比较好的操作csv文件的API,这里简单讲一下用法。 先下载javacsv2.0.zip的文件,解压后,把javacsv.jar 添加到项目中。 下面是官方网址: ...

利用JavaCSV API来读写csv文件

利用JavaCSV API读写csv文件,这是一个成熟的三方工具包,可以极大提升开发者开发效率。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)