jxls使用模版导出Excel

/**
     * 使用模版导出Excel
     */
    @SuppressWarnings({ "unchecked", "deprecation" })
    @Override
    public String experExcel(Card card,HttpServletRequest request,HttpServletResponse response){
        try {
            
        Map<Object,Object> map=new HashMap<Object, Object>();
        StringBuffer where=new StringBuffer();
        StringBuffer useSql=new StringBuffer();
        Users user=(Users) request.getSession().getAttribute("user");
        //需要判断是否查询总帐号
        useSql.append(" from UseTbl where userIdFk=‘"+user.getId()+"‘ ");
    
        List<UseTbl> result=baseDao.qryInfo(useSql.toString(), null);//查询数据库数据
        
        map.put("experMessageList",result);
        map.put("experDate",new Date());
        String basePath=request.getRealPath("/");
        String temp=user.getName()+"的账单信息-"+user.getId()+".xls";
        createExcel(basePath+"files/账单信息.xls", map, basePath+"file/down/",temp);//basePath+"files/账单信息.xls" 模版的路径
        //temp = new String(temp.getBytes("utf-8"),"iso-8859-1");
        //InputStream is=new FileInputStream(new File(basePath+"upload/experMessageDownload/专家信息.xls"));
        return  download(request, response, basePath+"file/down/"+temp, temp);
        } catch (Exception e) {
            e.printStackTrace();
            return "error";
        }    
    }

/**
     * 用excel模版模版导出excel
     *
     * @param templeteSrc
     *            模版路径(含名称)
     * @param params
     *            模版参数
     * @param newExcelPath
     *            生成excel路径
     */
    public static void createExcel(String templeteSrc, Map<Object,Object> params,
            String newExcelPath,String cre_FileName) {
        try {
            XLSTransformer transformer = new XLSTransformer();
            File file=new File(newExcelPath);
            if(!file.exists()){
                file.mkdirs();
            }
            transformer.transformXLS(templeteSrc, params, newExcelPath+cre_FileName);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

/**
     * 下载
     *
     * @param request
     * @param response
     * @param urlandfile
     *            文件路径+文件名
     * @param fileName
     *            文件名
     * @return success 和 error
     * @throws Exception
     */
    public static String download(HttpServletRequest request,
            HttpServletResponse response, String urlandfile, String fileName)
            throws Exception {
        String msg = null;
        try {
            response.setCharacterEncoding("UTF-8");
            javax.servlet.ServletOutputStream ou = response.getOutputStream();
            // 文件名
            // String filename=new
            // String(fileName.getBytes("ISO8859_1"),"GB2312").toString();

// 路径
            java.io.File file = new java.io.File(urlandfile);

if (!file.exists()) {
                System.out.println(file.getAbsolutePath() + " 文件不能存在!");
                msg = "unexists";
                return msg;
            }

// 读取文件流
            java.io.FileInputStream fileInputStream = new java.io.FileInputStream(
                    file);

// 下载文件
            // 设置响应头和下载保存的文件名

response.setContentType("application/x-msdownload;charset=UTF-8");// 弹出下载的框

response.setContentLength((int)file.length());// 下载统计文件大小的进度
            response.setHeader("Content-Disposition", "attachment; filename="
                    + new String(fileName.getBytes(), "ISO-8859-1"));
            // 下载框的信息
            if (fileInputStream != null) {
                // int filelen = fileInputStream.available();
                // 文件太大时内存不能一次读出,要循环

byte a[] = new byte[1024];
                int n = 0;
                while (n != -1) {
                    n = fileInputStream.read(a);
                    if (n > 0) {
                        ou.write(a, 0, n);
                    }
                }
                fileInputStream.read(a);

}
            fileInputStream.close();

ou.close();

msg = "success";
        } catch (Exception e) {
            e.printStackTrace();
            msg = "error";

}
        // 解决完成后使用一切正常,但是总抛出java.lang.IllegalStateException异常主要是流还存在
        return msg;
    }

=============excel模版(账单信息.xls)============================

名称 卡号 当期金额 消费日期 资金动向 消费类型
<jx:forEach items="${experMessageList}" var="experMessage">      
${experMessage.name} ${experMessage.cardFk} ${experMessage.xffs} ${experMessage.zrzh} ${experMessage.statsu} ${experMessage.Xflx}
</jx:forEach>          

jxls使用模版导出Excel

时间: 2024-07-29 23:09:46

jxls使用模版导出Excel的相关文章

使用Open Xml按模版导出Excel文件(下)

(3)将数据写入Excel 把数据写入到Excel文件是本文的关键技术.这里需要用到OpenXml.在Sdk里已经提供了足够的文件操作方法,我们就调用这些方法,将数据源的数据写到文件中. 首先我们定义了一些工具类,用于读取单元格的行列值. 在Excel中,每个单元格都有一个地址:如B3表示第二行第三列的格子,在Utility中的GetRowIndex和GetColumnIndex就是输入字符串”B3”,返回Int类型的索引2 和3.还有输入“B3”,返回列的字母“B”等等. 在WorkSheet

使用Open Xml按模版导出Excel文件(上)

完整内容请参见我的网站 http://www.iyummy.com.cn/Blog/Detail/3 我们在做应用系统中经常需要将数据库中的数据导出成为Excel文件.如果是要导出报表的话,最好是能够根据定义好的模版生成一个美观的Excel. 以前要生成有样式的Excel.一般是使用Xml形式的Excel修改,或者使用Excel的Api.前者要修改样式的话特别麻烦,后者在Asp.net里会起很多进程. 庆幸的是从office 2007开始,微软使用了OpenXml来定义office的文件.使用r

用JXLS和poi导出Excel

apache的poi提供了支持MS Office文档操作的java API.jXLS则是基于poi提供了支持Excel模版操作的API. jXLS的主页是:http://jxls.sourceforge.net,似乎国内不能访问,需要代理. 下面是一些例子,以及我对导出到多个sheet的一个封装. 先定义一个模版: 这里的jxls tag和JSP的tag很像,varStatus是本次循环变量. jxls提供了一个最简单的接口: void net.sf.jxls.transformer.XLSTr

weblogic 12c下jxls导出excel报错Could not initialize class org.apache.poi.xssf.usermodel.XSSFVMLDrawing

周一,开发反馈weblogic 12c下jxls导出excel报错,公司环境和UAT环境均报错,看日志如下: 2016-06-08 09:16:55,825 ERROR org.jxls.util.TransformerFactory.createTransformer(TransformerFactory.java:40)[org.jxls.util.TransformerFactory] - Method createTransformer of org.jxls.transform.poi

利用poi导出Excel

import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.sql.Date;import java.util.ArrayList;import java.util.List; import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.

DataTable ---导出Excel

//mscorlib.dll, v4.0.0.0&&Microsoft.Office.Interop.Excel.dll, v14.0.0.0 /// <summary> /// 导出Excel /// </summary> /// <param name="dt_data">要导出的数据表</param> public void ExcelPort(DataTable dt_data) { try { //表格控件对象(

Java报表工具FineReport导出EXCEL的四种API

在实际的应用中会经常需要将数据导出成excel,导出的方式除原样导出还有分页导出.分页分sheet导出和大数据量导出.对于excel 2003版,由于限制了每个sheet的最大行数和列数,大数据量导出时会默认时分多个sheet,而excel2007不会出现这样的问题.这些导出方式在JAVA程序中分别有不同的接口来实现:   1.原样导出 原样导出就是不预览直接导出excel 其程序接口代码如下:  outputStream = new FileOutputStream(new File("E:\

Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框

在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作.而数据导出的格式一般是EXCEL或者PDF,我这里就用两篇文章分别给大家介绍下.(注意,我们这里说的数据导出可不是数据库中的数据导出!么误会啦^_^) 呵呵,首先我们来导出EXCEL格式的文件吧.现在主流的操作Excel文件的开源工具有很多,用得比较多的就是Apache的POI及JExcelAPI.这里我们用Apache POI!我们先去Apach

Java报表工具FineReport导出EXCEL的四种方式

在实际的应用中会经常需要将数据导出成excel,导出的方式除原样导出还有分页导出.分页分sheet导出和大数据量导出.对于excel2003版,限制了每个sheet的最大行数和列数,大数据量导出时会默认时分多个sheet,而excel2007不会出现这样的问题.这些导出方式在JAVA程序中分别有不同的接口来实现: 1.  原样导出 原样导出就是不预览直接导出excel 其程序接口代码如下: outputStream = new FileOutputStream(new File("E:\\Exc