订阅所有JSP/Servlet的日志 订阅 | 这是最新一篇日志 上一篇 | 下一篇日志 下一篇 ]
JSP探讨

利用JAVA操作EXCEL文件(JAVA EXCEL API)

JAVA EXCEL API简介


Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。因为是使用Java编写的,所以我们在Web应用中可以通过JSP、Servlet来调用API实现对Excel数据表的访问。

提供以下功能:

从Excel 95、97、2000等格式的文件中读取数据;
读取Excel公式(可以读取Excel 97以后的公式);
生成Excel数据表(格式为Excel 97);
支持字体、数字、日期的格式化;
支持单元格的阴影操作,以及颜色操作;
修改已经存在的数据表;
能够读取图表信息
1.应用示例:
包括从Excel读取数据,生成新的Excel,以及修改Excel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
package common.util;
 
import jxl.*;
import jxl.format.UnderlineStyle;
import jxl.write.*;
import jxl.write.Number;
import jxl.write.Boolean;
 
import java.io.*;
 
/**
 * Created by IntelliJ IDEA.
 * User: xl
 * Date: 2005-7-17
 * Time: 9:33:22
 * To change this template use File | Settings | File Templates.
 */
public class ExcelHandle
{
    public ExcelHandle()
    {
    }
 
    /**
     * 读取Excel
     *
     * @param filePath
     */
    public static void readExcel(String filePath)
    {
        try
        {
            InputStream is = new FileInputStream(filePath);
            Workbook rwb = Workbook.getWorkbook(is);
            //Sheet st = rwb.getSheet("0")这里有两种方法获取sheet表,1为名字,而为下标,从0开始
            Sheet st = rwb.getSheet("original");
            Cell c00 = st.getCell(0,0);
            //通用的获取cell值的方式,返回字符串
            String strc00 = c00.getContents();
            //获得cell具体类型值的方式
            if(c00.getType() == CellType.LABEL)
            {
                LabelCell labelc00 = (LabelCell)c00;
                strc00 = labelc00.getString();
            }
            //输出
            System.out.println(strc00);
            //关闭
            rwb.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
 
    /**
     * 输出Excel
     *
     * @param os
     */
    public static void writeExcel(OutputStream os)
    {
        try
        {
            /**
             * 只能通过API提供的工厂方法来创建Workbook,而不能使用WritableWorkbook的构造函数,
             * 因为类WritableWorkbook的构造函数为protected类型
             * method(1)直接从目标文件中读取WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile));
             * method(2)如下实例所示 将WritableWorkbook直接写入到输出流

             */
            WritableWorkbook wwb = Workbook.createWorkbook(os);
            //创建Excel工作表 指定名称和位置
            WritableSheet ws = wwb.createSheet("Test Sheet 1",0);
 
            //**************往工作表中添加数据*****************
 
            //1.添加Label对象
            Label label = new Label(0,0,"this is a label test");
            ws.addCell(label);
 
            //添加带有字型Formatting对象
            WritableFont wf = new WritableFont(WritableFont.TIMES,18,WritableFont.BOLD,true);
            WritableCellFormat wcf = new WritableCellFormat(wf);
            Label labelcf = new Label(1,0,"this is a label test",wcf);
            ws.addCell(labelcf);
 
            //添加带有字体颜色的Formatting对象
            WritableFont wfc = new WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false,
                    UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED);
            WritableCellFormat wcfFC = new WritableCellFormat(wfc);
            Label labelCF = new Label(1,0,"This is a Label Cell",wcfFC);
            ws.addCell(labelCF);
 
            //2.添加Number对象
            Number labelN = new Number(0,1,3.1415926);
            ws.addCell(labelN);
 
            //添加带有formatting的Number对象
            NumberFormat nf = new NumberFormat("#.##");
            WritableCellFormat wcfN = new WritableCellFormat(nf);
            Number labelNF = new jxl.write.Number(1,1,3.1415926,wcfN);
            ws.addCell(labelNF);
 
            //3.添加Boolean对象
            Boolean labelB = new jxl.write.Boolean(0,2,false);
            ws.addCell(labelB);
 
            //4.添加DateTime对象
            jxl.write.DateTime labelDT = new jxl.write.DateTime(0,3,new java.util.Date());
            ws.addCell(labelDT);
 
            //添加带有formatting的DateFormat对象
            DateFormat df = new DateFormat("dd MM yyyy hh:mm:ss");
            WritableCellFormat wcfDF = new WritableCellFormat(df);
            DateTime labelDTF = new DateTime(1,3,new java.util.Date(),wcfDF);
            ws.addCell(labelDTF);
 
 
            //添加图片对象,jxl只支持png格式图片
            File image = new File("f:\\2.png");
            WritableImage wimage = new WritableImage(0,1,2,2,image);
            ws.addImage(wimage);
            //写入工作表
            wwb.write();
            wwb.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
 
    /**
     * 拷贝后,进行修改,其中file1为被copy对象,file2为修改后创建的对象
     * 尽单元格原有的格式化修饰是不能去掉的,我们还是可以将新的单元格修饰加上去,
     * 以使单元格的内容以不同的形式表现
     * @param file1
     * @param file2
     */
    public static void modifyExcel(File file1,File file2)
    {
        try
        {
            Workbook rwb = Workbook.getWorkbook(file1);
            WritableWorkbook wwb = Workbook.createWorkbook(file2,rwb);//copy
            WritableSheet ws = wwb.getSheet(0);
            WritableCell wc = ws.getWritableCell(0,0);
            //判断单元格的类型,做出相应的转换
            if(wc.getType == CellType.LABEL)
            {
                Label label = (Label)wc;
                label.setString("The value has been modified");
            }
            wwb.write();
            wwb.close();
            rwb.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
 
 
    //测试
    public static void main(String[] args)
    {
        try
        {
            //读Excel
            ExcelHandle.readExcel("f:/testRead.xls");
            //输出Excel
            File fileWrite = new File("f:/testWrite.xls");
            fileWrite.createNewFile();
            OutputStream os = new FileOutputStream(fileWrite);
            ExcelHandle.writeExcel(os);
            //修改Excel
            ExcelHandle.modifyExcel(new file(""),new File(""));
        }
        catch(Exception e)
        {
           e.printStackTrace();
        }
    }
}

2.在jsp中做相关测试,创建一个writeExcel.jsp
1
2
3
4
5
6
7
8
<%
response.reset();//清除Buffer
response.setContentType("application/vnd.ms-excel");
File fileWrite = new File("f:/testWrite.xls");
fileWrite.createNewFile();
new FileOutputStream(fileWrite);
ExcelHandle.writeExcel(new FileOutputStream(fileWrite));
%>

在IE中浏览writeExcel.jsp就可以动态生成Excel文档了,其中response.setContentType("application/vnd.ms-excel");语句必须要,才能确保不乱码,在jsp中输入<%@page contentType="application/vnd.ms-excel;charset=GBK"%>不行。

平均得分
(0 次评分)





文章来自: ChinaitpowerJava频道
标签:
评论: 74 | 查看次数: 2004
  • 共有 74 条评论
  • <<
  • |
  • 1
  • 2
  • 3
  • 4
  • 5
游客 [2008-08-01 16:22:01]
游客 [2008-08-01 16:13:01]
移民
投资移民
加拿大移民
技术移民
移民加拿大
澳洲技术移民
德国移民
移民澳洲
澳洲移民
出国移民
移民出国
英国移民
澳大利亚移民
加拿大投资移民
加拿大技术移民
美国留学
法国留学
北欧留学
瑞典留学
芬兰留学
澳洲留学
除湿机
抽湿机
工业除湿机
空气净化器
空气净化机
步进电机
联轴器
真空泵
工作服
职业装
北京工作服
定做工作服
北京二手空调回收
空调维修
物资回收
防腐设备
风机
铠装热电偶
精密铸造
美术培训
美术高考
美术高考培训
画室
北京画室
谐波治理
无功补偿
防腐管道
英美制丝锥
继电保护测试仪
日语学校
日语培训
安装卫星电视
安装卫星天线
北京安装卫星电视
北京安装卫星天线
针孔摄像机
望远镜
夜视仪
探测狗
窃听器
无线耳机
屏蔽器
金属探测器
隔墙监听器
国标舞
拉丁舞
喷码机
针孔摄像机
烤瓷牙
除沫器
土壤水分速测仪
土壤水分测定仪
土壤水分测量仪
土壤墒情记录仪
农药残留速测仪
土壤化肥速测仪
土壤养分测试仪
信号隔离器
信号分配器
隔离器
温度变送器
电流变送器
配电器
隔离配电器
隔离模块
糖尿病足
煤气发生炉
高低温试验箱
振动试验台
恒温恒湿试验箱
恒温恒湿箱
恒温箱
振动台
盐雾箱
老化台
盐雾试验箱
高低温箱
低温试验箱
振动试验机
合同纠纷
房产纠纷
劳动纠纷
房地产律师
制氮机
在职研究生
液体壁纸
清水模板
冷弯型钢
roll forming
开口闪点仪
凝固点仪
闭口闪点仪
运动粘度仪
粘度仪
抗乳化测定仪
丝网除沫器
气液过滤网
除雾器
丝网除雾器
波纹填料
三菱电机空调
牛仔服
牛仔服装厂
牛仔休闲
牛仔裤
牛仔品牌
牛仔专卖店
虹吸
虹吸雨水
虹吸排水
有压流
同层排水
walk throught metal detector
恒温器
马达保护器
热保护器
温度开关
温控器
过流保护器
藏獒
Google左侧优化
舞台设计
铅丝笼
石笼网
烧烤网
振动筛网
拖链
光纤熔接机
光缆监测系统
光时域反射仪
OTDR
nike shoes
air jordan
不锈钢反应斧
游客 [2008-08-01 10:07:14]
游客 [2008-07-16 15:37:41]
游客 [2008-07-15 14:35:53]
移民
投资移民
加拿大移民
技术移民
移民加拿大
澳洲技术移民
德国移民
移民澳洲
澳洲移民
出国移民
移民出国
英国移民
澳大利亚移民
加拿大投资移民
加拿大技术移民
美国留学
法国留学
北欧留学
瑞典留学
芬兰留学
澳洲留学
除湿机
抽湿机
工业除湿机
空气净化器
空气净化机
步进电机
联轴器
真空泵
工作服
职业装
北京工作服
定做工作服
北京二手空调回收
空调维修
物资回收
防腐设备
风机
铠装热电偶
精密铸造
美术培训
美术高考
美术高考培训
画室
北京画室
谐波治理
无功补偿
防腐管道
英美制丝锥
继电保护测试仪
日语学校
日语培训
安装卫星电视
安装卫星天线
北京安装卫星电视
北京安装卫星天线
针孔摄像机
望远镜
夜视仪
探测狗
窃听器
无线耳机
屏蔽器
金属探测器
隔墙监听器
国标舞
拉丁舞
喷码机
针孔摄像机
烤瓷牙
除沫器
土壤水分速测仪
土壤水分测定仪
土壤水分测量仪
土壤墒情记录仪
农药残留速测仪
土壤化肥速测仪
土壤养分测试仪
信号隔离器
信号分配器
隔离器
温度变送器
电流变送器
配电器
隔离配电器
隔离模块
糖尿病足
煤气发生炉
高低温试验箱
振动试验台
恒温恒湿试验箱
恒温恒湿箱
恒温箱
振动台
盐雾箱
老化台
盐雾试验箱
高低温箱
低温试验箱
振动试验机
合同纠纷
房产纠纷
劳动纠纷
房地产律师
制氮机
在职研究生
液体壁纸
清水模板
冷弯型钢
roll forming
开口闪点仪
凝固点仪
闭口闪点仪
运动粘度仪
粘度仪
抗乳化测定仪
丝网除沫器
气液过滤网
除雾器
丝网除雾器
波纹填料
三菱电机空调
牛仔服
牛仔服装厂
牛仔休闲
牛仔裤
牛仔品牌
牛仔专卖店
虹吸
虹吸雨水
虹吸排水
有压流
同层排水
walk throught metal detector
恒温器
马达保护器
热保护器
温度开关
温控器
过流保护器
游客 [2008-07-08 09:27:43]
游客 [2008-06-26 14:24:52]
移民
投资移民
加拿大移民
技术移民
移民加拿大
澳洲技术移民
德国移民
移民澳洲
澳洲移民
出国移民
移民出国
英国移民
澳大利亚移民
加拿大投资移民
加拿大技术移民
美国留学
法国留学
北欧留学
瑞典留学
芬兰留学
澳洲留学
步进电机
联轴器
真空泵
肠炎
结肠炎
直肠炎
慢性肠炎
慢性结肠炎
结肠炎的治疗
溃疡性结肠炎
慢性结肠炎的治疗
工作服
职业装
北京工作服
定做工作服
北京二手空调回收
空调维修
物资回收
风机
铠装热电偶
精密铸造
美术培训
美术高考
美术高考培训
画室
北京画室
谐波治理
无功补偿
丝锥
挤压丝锥
非标丝锥
梯形丝锥
螺纹环规
英美制丝锥
继电保护测试仪
煤气发生炉
两段式煤气发生炉
环保节能型煤气发生炉
日语学校
日语培训
安装卫星电视
安装卫星天线
北京安装卫星电视
北京安装卫星天线
韩国服装
韩版服装
韩国服饰
针孔摄像机
望远镜
夜视仪
探测狗
窃听器
无线耳机
屏蔽器
金属探测器
隔墙监听器
国标舞
拉丁舞
无纸记录仪
红外测温仪
无纸记录仪
喷码机
针孔摄像机
烤瓷牙
除沫器
土壤水分速测仪
土壤水分测定仪
土壤水分测量仪
土壤墒情记录仪
农药残留速测仪
土壤化肥速测仪
土壤养分测试仪
信号隔离器
信号分配器
隔离器
温度变送器
电流变送器
配电器
隔离配电器
隔离模块
糖尿病足
煤气发生炉
高低温试验箱
振动试验台
恒温恒湿试验箱
恒温恒湿箱
恒温箱
振动台
盐雾箱
老化台
盐雾试验箱
高低温箱
低温试验箱
振动试验机
合同纠纷
房产纠纷
劳动纠纷
房地产律师
制氮机
游客 [2008-06-18 10:27:41]
游客 [2008-06-13 10:20:59]
精油
论文发表
上海翻译公司
上海翻译
英语培训
英语口语
神经性皮炎
皮炎
湿疹
荨麻疹
慢性荨麻疹
藏獒
液压缸
油缸
破碎机
北京旅游
北京旅行社
条码机
条码打印机
条形码打印机
阴茎增大
伟哥
发酵罐
冰淇淋
加盟店
冷饮店
冰淇淋机
冰淇淋粉
冰激凌
大豆床上用品
保健内衣
羊绒内衣
大豆纤维面料
团购礼品
移民
投资移民
商业移民
技术移民
美国移民
澳洲移民
德国移民
英国移民
加拿大移民
热电偶插头
测温线
热电阻
硅碳棒
除湿机
抽湿机
工业除湿机
空气净化器
空气净化机
吸塑机
纸管机
无缝管
合金管
无缝管
无缝钢管
高血压
无线网桥
无线监控
产品设计
men spa beijing
men massage beijing
pearl jewelry
Beijing Tour
china Tour
beijing Tour
china Tour
beijing Tour
China Necklace Wholesale
China Bracelet Wholesale
China Ring wholesale
China gemstone beads wholesale
China Jewelry Accessories wholesale
China Semiprecious beads wholesale
replica handbag
replica tiffany
replica watches
louis vuitton replica
chanel replica
gucci replica
Chinese language
Chinese learn
learning Chinese
learn mandarin
ecosway
gasifier
coal gas
coal gasification
pro dj cases
beijing tour
beijing tours
beijing travel
beijing tours
china tour
beijing
china tours
china travel
beijing china
china beijing
beijing hotel
beijing hotels
China Flights
carved fireplace
stone bathtub
marble fountain
marble bench
marble fireplace
marble sculpture
marble columns
marble lions
marble doorway
marble gazebo
marble pillar
marble fireplace surround
marble statue
marble bathtub
游客 [2008-06-05 10:20:50]
某美独资(500强)招聘java/j2ee/QA,月薪5-15k
chloe_hb159@hotmail.com
chloe@21cnmanager.com


某美独资(500强)招聘java/j2ee/QA,月薪5-15k
chloe_hb159@hotmail.com
chloe@21cnmanager.com

某美独资(500强)招聘java/j2ee/QA,月薪5-15k
chloe_hb159@hotmail.com
chloe@21cnmanager.com
游客 [2008-05-27 15:16:44]

Age of Conan Gold

AoC Gold

Sell Age of Conan Gold

Age of Conan News

Age of Conan Gold

Buy Age of Conan Gold


Age of Conan Gold
Buy Age of Conan Gold
Buy Cheap Age of Conan Gold

Age of Conan Power Leveling
cheap Age of Conan power leveling
sell Age of Conan Power Leveling

Age of Conan Accounts
Age of Conan Accounts for sale
AoC Accounts

Cheap wow gold

buy wow gold



cheapest wow gold

world of warcraft gold

sell world of warcraft gold

buy wow account

buy world of warcraft account

wow power leveling

world of warcraft powerleveling

Wow Honor Points Leveling

Wow Pvp Honor Leveling

wow profession leveling

wow skill leveling

Wow Reputation Leveling

World Of Warcraft Reputation Leveling

Wow Honor Leveling

World Of Warcraft Honor Leveling

Wow Cd Key

wow Game Time Card



Wow gold for sale

wow gold fast delivery

wow accounts

buy wow account character

cheap wow power leveling

world of warcraft powerleveling

World Of Warcraft Cd Key

World Of Warcraft Time Card


Buy Lotro Gold | Lord Of The Rings Online Gold

Lotro Accounts | Buy Lotro Accounts

Lord Of The Rings Online Power Leveling | Lord Of The Rings Online PowerLeveling

Lotro Cd Key | Lord Time Card


Lotro Gold | Lotro Gold Instant Delivery

lord of the rings online accounts | lord of the rings online accounts for sale

Lotro Power Leveling | Lotro Powerleveling

Lord Of The Rings Online Cd Key | Lord Of The Rings Online Time Card



l2 adena | lineage2 adena

lineage 2 accounts | l2 accounts

lineage 2 power leveling

lineage 2 powerleveling

l2 power leveling | lineage 2 Cd key

L2 Cd Key | lineage 2 time card

l2 game time card

游客 [2008-05-20 14:23:51]
游客 [2008-01-08 15:46:54]
转载
www.javaapi.cn
游客 [2008-01-07 12:53:39]
怎么读excel中日期型如 2007/3/11 12:14:14的值
  • 共有 74 条评论
  • <<
  • |
  • 1
  • 2
  • 3
  • 4
  • 5
发表评论
昵 称:  登录
内 容:
选 项:
字数限制 1000 字 | UBB代码 开启 | [img]标签 开启