提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|其它|编辑:郝浩|2012-10-11 10:18:24.000|阅读 808 次
概述:使用JExcel来产生EXCEL档的方法,本文介绍了具体步骤,并附上代码。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
上次谈过了使用iText产生PDF档,这次换成来谈谈使用JExcel来产生EXCEL档的方法。
首先,先到他的SourceForge主页面download相关的API档案。
//sourceforge.net/projects/jexcelapi/
或
//cahobeh.cn/zh-CN/product/1148/download.aspx
当然,他也是OpenSource的组件。
下列为其Tutorial教学:
//www.andykhan.com/jexcelapi/tutorial.html
一切就绪后,那就准备上路了。
下载下来的压缩档解开后,可以找到jxl.jar,先将此档案加入你的Classpath中吧!
也就是整份的Excel档案,可指定档名。
Workbook workbook = Workbook.getWorkbook(new File("test.xls"));
也就是每个Excel档案下面可以跳tag的sheet表。
Sheet sheet = workbook.createSheet("我的Excel表", 0);
第一个参数是sheet name,第二个参数是第几张sheet,当然index是由0开始算。
WritableFont chFont11w = new WritableFont(WritableFont.TIMES, 11); chFont11w.setColour(Colour.WHITE);
先建立一个WritableFont的instance,其constructor的第一个参数是指定字型,第二个是字号。
其中字型的部份,可以使用WritableFont所提供预设的一堆static常数来指定,也可以直接输入string,比如打"标楷体",到时产生的字型就会依照你所指定的来显示。而setColour是指定此字型的颜色,这个部份就麻烦。(由colour这个字来看,很显然的JExcel应是英国相关的人开发的:P 反正总之不会是美国)
颜色为什么麻烦呢?在JExcel里面,Colour class并不提供public constructor让user自己指定RGB的颜色,所以你只能从Colour中一堆的static常数颜色来指定,之前为了这个问题还研究了一下他的原始码,果然是不行,他的constructor是protected的,就连继承之后虽然可以指定rgb颜色,但是仍然没有作用。(后来我看了一下Excel,发现原来这是因为Excel的标准调色盘就那些颜色
不像Word一样可以让使用者自订颜色的关系)
查API doc就可以看到,他提供的颜色有:
static Colour AQUA static Colour AUTOMATIC static Colour BLACK static Colour BLUE static Colour BLUE_GREY static Colour BLUE2 static Colour BRIGHT_GREEN static Colour BROWN static Colour CORAL static Colour DARK_BLUE static Colour DARK_BLUE2 static Colour DARK_GREEN static Colour DARK_PURPLE static Colour DARK_RED static Colour DARK_RED2 static Colour DARK_TEAL static Colour DARK_YELLOW static Colour DEFAULT_BACKGROUND static Colour DEFAULT_BACKGROUND1 static Colour GOLD static Colour GRAY_25 static Colour GRAY_50 static Colour GRAY_80 static Colour GREEN static Colour GREY_25_PERCENT static Colour GREY_40_PERCENT static Colour GREY_50_PERCENT static Colour GREY_80_PERCENT static Colour ICE_BLUE static Colour INDIGO static Colour IVORY static Colour LAVENDER static Colour LIGHT_BLUE static Colour LIGHT_GREEN static Colour LIGHT_ORANGE static Colour LIGHT_TURQUOISE static Colour LIGHT_TURQUOISE2 static Colour LIME static Colour OCEAN_BLUE static Colour OLIVE_GREEN static Colour ORANGE static Colour PALE_BLUE static Colour PALETTE_BLACK static Colour PERIWINKLE static Colour PINK static Colour PINK2 static Colour PLUM static Colour PLUM2 static Colour RED static Colour ROSE static Colour SEA_GREEN static Colour SKY_BLUE static Colour TAN static Colour TEAL static Colour TEAL2 static Colour TURQOISE2 static Colour TURQUOISE static Colour UNKNOWN static Colour VERY_LIGHT_YELLOW static Colour VIOLET static Colour VIOLET2 static Colour WHITE static Colour YELLOW static Colour YELLOW2
上面列了这么多,哪知道哪一个真正的颜色是怎么样?
除非自己边试边换才知,这太麻烦了,我写了一只程序把所有的颜色都印出来:
好了,但问题来了,上面提供的颜色如果对比较龟毛的人而言(比如我...),
一定是不足使用的,但如刚刚上述说的,Colour不提供自订颜色的功能,后来找了老半天文件,终于找到一个可以用的方式,就是在workbook中,提供了一个setColourRGB的method,但这个method并不是设定新的颜色,而是可以把上述提供的颜色重新覆写其RGB设定值,这个方法虽然不是挺好,但是终于有救了!所以你就找个颜色来开刀,例如:
workbook.setColourRGB(Colour.DARK_GREEN, 0xDB, 0xF4, 0x8E);
我把DARK_GREEN的RGB改写成#DBF48E (0x表示16进位)
(你要什么颜色而有什么16进位色码,很多方法可以取得,比如:Photoshop、Dreamweaver等)
这样一来,之后再使用Colour.DARK_GREEN,就会变成我们想要的颜色了。
WritableCellFormat cellFormat1 = new WritableCellFormat (); cellFormat1.setFont(chFont11w); cellFormat1.setBackground(Colour.DARK_GREEN); cellFormat1.setAlignment(Alignment.CENTRE); cellFormat1.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.GRAY_80);
这里呢,要先产生你要的cell的格式,例如指定字型setFont,把我们刚刚产生的白色11大小的TIMES指定进去,设定背景setBackground,把我们刚刚覆写掉的DARK_GREEN指定进去,指定对齐方式setAlignment为置中,以及设定此cell的上下左右(Border.ALL)的框线以及颜色。
Label label = new Label(2, 3, "我是rexmen", cellFormat1); sheet.addCell(label);
此constructor的第一个参数是产生的储存格的x的位置,2表示第3栏(index从0开始算)
第二个参数就是y的位置,3表示第4列。
用Excel的讲法来说,就是「C4」那一格。
而第三个就是输入的文字,而第四格就把我们刚刚产生的cell的format指定进去。
最后再把此label加入sheet中。使用addCell method。
把该作的都作完后,别忘了close掉文件,
workbook.write(); workbook.close();
先使用write()写入后,再用colose关闭。
这样就大功告成啰!最基本的JExcel就完成了。
其他的功能啦,插入图片啦、试算的公式啦、有的没的自己有空再试了!
若是在JSP上要让User download这个动态产生的excel档,要用Servlet RequestDispatcher的方式,若没有设定正确表头,导过去的档案会会在browser上看到的是乱碥,要记得设定
response.setContentType("application/vnd.ms-excel");
再导到正确的excel档案位置
RequestDispatcher view = request.getRequestDispatcher("test.xls"); view.forward(request, response);
如此以来,在网址列上不会show出 test.xls 的档名 (会按照你在web.xml里设定的servlet对应mapping档名),
而且可以正确的在browser里看到Excel的内容。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
文章转载自:网络转载面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢