问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求java excel导出完整模板例子,最好附上jar包

发布网友 发布时间:2022-04-25 22:05

我来回答

3个回答

热心网友 时间:2022-06-17 23:20

package cn.com.jsoft.utils;

import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.PageContext;

import jxl.SheetSettings;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Colour;
import jxl.format.VerticalAlignment;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

/**
 * jxl导出excel
 * @author jamboree
 * @date  2013-11-28
 */
public class JxlExcelUtils {

    /**
     * @author 
     * @param objData 导出内容数组
     * @param sheetName 导出工作表的名称
     * @param columns 导出Excel的表头数组
     * @return
     */
    public static int exportToExcel(HttpServletResponse response, List<Map<String, Object>> objData, String sheetName,List<String> columns) {
        int flag = 0;
        //声明工作簿jxl.write.WritableWorkbook
        WritableWorkbook wwb;
        try {
            //根据传进来的file对象创建可写入的Excel工作薄
            OutputStream os = response.getOutputStream();
            
            wwb = Workbook.createWorkbook(os);

            /*
             * 创建一个工作表、sheetName为工作表的名称、"0"为第一个工作表
             * 打开Excel的时候会看到左下角默认有3个sheet、"sheet1、sheet2、sheet3"这样
             * 代码中的"0"就是sheet1、其它的一一对应。
             * createSheet(sheetName, 0)一个是工作表的名称,另一个是工作表在工作薄中的位置
             */
            WritableSheet ws = wwb.createSheet(sheetName, 0);
            
            SheetSettings ss = ws.getSettings();
            ss.setVerticalFreeze(1);//冻结表头
            
            WritableFont font1 =new WritableFont(WritableFont.createFont("微软雅黑"), 10 ,WritableFont.BOLD);
            WritableFont font2 =new WritableFont(WritableFont.createFont("微软雅黑"), 9 ,WritableFont.NO_BOLD);
            WritableCellFormat wcf = new WritableCellFormat(font1);
            WritableCellFormat wcf2 = new WritableCellFormat(font2);
            WritableCellFormat wcf3 = new WritableCellFormat(font2);//设置样式,字体

            //创建单元格样式
            //WritableCellFormat wcf = new WritableCellFormat();

            //背景颜色
            wcf.setBackground(jxl.format.Colour.YELLOW);
            wcf.setAlignment(Alignment.CENTRE);  //平行居中
            wcf.setVerticalAlignment(VerticalAlignment.CENTRE);  //垂直居中
            wcf3.setAlignment(Alignment.CENTRE);  //平行居中
            wcf3.setVerticalAlignment(VerticalAlignment.CENTRE);  //垂直居中
            wcf3.setBackground(Colour.LIGHT_ORANGE);
            wcf2.setAlignment(Alignment.CENTRE);  //平行居中
            wcf2.setVerticalAlignment(VerticalAlignment.CENTRE);  //垂直居中

            /*
             * 这个是单元格内容居中显示
             * 还有很多很多样式
             */
            wcf.setAlignment(Alignment.CENTRE);

            //判断一下表头数组是否有数据
            if (columns != null && columns.size() > 0) {

                //循环写入表头
                for (int i = 0; i < columns.size(); i++) {

                    /*
                     * 添加单元格(Cell)内容addCell()
                     * 添加Label对象Label()
                     * 数据的类型有很多种、在这里你需要什么类型就导入什么类型
                     * 如:jxl.write.DateTime 、jxl.write.Number、jxl.write.Label
                     * Label(i, 0, columns[i], wcf)
                     * 其中i为列、0为行、columns[i]为数据、wcf为样式
                     * 合起来就是说将columns[i]添加到第一行(行、列下标都是从0开始)第i列、样式为什么"色"内容居中
                     */
                    ws.addCell(new Label(i, 0, columns.get(i), wcf));
                }

                //判断表中是否有数据
                if (objData != null && objData.size() > 0) {
                    //循环写入表中数据
                    for (int i = 0; i < objData.size(); i++) {

                        //转换成map集合{activyName:测试功能,count:2}
                        Map<String, Object> map = (Map<String, Object>)objData.get(i);

                        //循环输出map中的子集:既列值
                        int j=0;
                        for(Object o:map.keySet()){
                            //ps:因为要“”通用”“导出功能,所以这里循环的时候不是get("Name"),而是通过map.get(o)
                            ws.addCell(new Label(j,i+1,String.valueOf(map.get(o))));
                            j++;
                        }
                    }
                }else{
                    flag = -1;
                }

                //写入Exel工作表
                wwb.write();

                //关闭Excel工作薄对象 
                wwb.close();
                
                //关闭流
                os.flush();
                os.close();
                
                os =null;
            }
        }catch (IllegalStateException e) {
            System.err.println(e.getMessage());
        }
        catch (Exception ex) {
            flag = 0;
            ex.printStackTrace();
        }

        return flag;
    }


    /**
     * 下载excel
     * @author 
     * @param response
     * @param filename 文件名 ,如:20110808.xls
     * @param listData 数据源
     * @param sheetName 表头名称
     * @param columns 列名称集合,如:{物品名称,数量,单价}
     */
    public static void exportexcle(HttpServletResponse response,String filename,List<Map<String, Object>> listData,String sheetName,List<String> columns)
    {
        //调用上面的方法、生成Excel文件
        response.setContentType("application/vnd.ms-excel");
        //response.setHeader("Content-Disposition", "attachment;filename="+filename);
        try {
            response.setHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes("gb2312"), "ISO8859-1") + ".xls");

            exportToExcel(response, listData, sheetName, columns);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } 


    }
}
调用的时候:
jxlUtils.exportexcle(response, filename, listData, sheetName, columns);
response.setHeader("Content-Disposition", "attachment;filename=" + new 
String(filename.getBytes("gb2312"), "ISO8859-1") + ".xls");

热心网友 时间:2022-06-17 23:21

这个够完善了吧

热心网友 时间:2022-06-17 23:21

这种网上很多呢,用poi导出表格很简单的,给你个例子http://blog.csdn.net/yiyino/article/details/7975190
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
阳光燕山学校是贵族学校吗 小米14ultra跌至新低 小米14ultra值得购买吗 马卡龙多少钱一个 马卡龙为什么那么贵 正宗马卡龙多少钱一个-马卡龙为什么这么贵 今年河北的迁西板栗多少钱一斤、生的 板栗什么时候上市能卖到几月呢? 6月份能买到新鲜板栗吗? 睡眠银行的生物信息专家林晨瀚讲座谁有听过,对他们的生物信息助眠方法讲 ... 材料力学实验简介 美国哪些机房,中国访问速度快,如何测试速度 java 往excel模板里写数,行不固定且最下面有合计,那位好点实例 怎样做蒜苔 国外哪个机房的服务器好 国外服务器哪个机房速度快? poi excel如何用java代码生成 如何用java将数据库里面的数据生成excel,然后展示在jsp页面上 蒜苔有哪些做法 蒜苔是餐桌上的美食,都有哪几种做法? 评定齿轮和齿轮副精度有哪些检验项目 小规模纳税人(个体户)按季申报,流程是怎么样的?需要怎么做? 齿轮的精度等级与齿轮的选材及热处理方法有什么关系 蒜苗除了拿来炒肉,还有哪些花式做法 齿轮加工材料有那些?精度如何选定? 齿轮精度 请问圆柱直齿轮和圆柱斜齿轮的精度等级有哪些和哪几种? 什么是齿轮精度? 小规模申请一般纳税人网上流程 齿条,齿轮6级精度是啥概念?谢谢 齿轮传动的平稳性精度主要是根据什么选择的 美国机房哪个机房好,要速度快,稳定的机房? java怎么实现导出excel 租用海外服务器,国外访问速度比较好的机房有哪几个?怎么选择好的海外服务器?从哪几个方面选择? 国外带硬防的服务器,哪个机房最好 java是否有办法生成带有vba脚本的Excel 国外哪个机房的空间比较好? 美国哪个机房的服务器好 美国服务器哪家好?有没有性能比较好的推荐? 国外空间哪个好?如何选择国外服务器! 做在线直播不卡顿的国外服务器哪家比较好? 国外哪个机房带硬防的服务器最好? 国外服务器哪家好? 中国发行的第一套邮票 美国VPS服务器租用?哪个机房的好 现在比较知名的国外主机都有哪些? 哪有好的海外BGP机房可以推荐 中国成立发行的第一套邮票是 中国发行的第一版人民币,第二版,第三版,第四版,各在那年那月发行的? 求一个win10专业版的永久激活密匙 新中国成立后发行的第一套邮票?