惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
Stack Overflow Blog
Stack Overflow Blog
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
T
The Blog of Author Tim Ferriss
博客园 - 叶小钗
N
Netflix TechBlog - Medium
腾讯CDC
C
Check Point Blog
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI
S
SegmentFault 最新的问题
F
Fortinet All Blogs
美团技术团队
U
Unit 42
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 司徒正美
F
Full Disclosure
Recorded Future
Recorded Future
D
DataBreaches.Net
博客园 - 【当耐特】
Martin Fowler
Martin Fowler
J
Java Code Geeks
I
InfoQ
Y
Y Combinator Blog
A
About on SuperTechFans
AI
AI
爱范儿
爱范儿
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Forbes - Security
Forbes - Security
W
WeLiveSecurity
M
MIT News - Artificial intelligence
雷峰网
雷峰网
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
Schneier on Security
Schneier on Security
The GitHub Blog
The GitHub Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
aimingoo的专栏
aimingoo的专栏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
G
GRAHAM CLULEY
Know Your Adversary
Know Your Adversary
Latest news
Latest news
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
D
Docker
Recent Commits to openclaw:main
Recent Commits to openclaw:main
量子位
V2EX - 技术
V2EX - 技术
Project Zero
Project Zero

博客园 - Tony Wu

关于研究性和工程性 送出orkut邀请,当然如果需要gmail邀请,还有很多 原来好男人还真不容易做啊! 第一次上班吃便当 预测分析研究 地理信息系统应用于教育领域之查询功能 关于点相对于线的位置判定 <用演示说话>读书笔记 网络数据集的构建以及基于网络数据集的路径分析 天。鬼。法 超图SuperMap Is.Net开发心得及一些问题 开始在NEC做事,心情愉快 元月6日的回忆 关于大学 自己录了一首歌,嘻嘻 关于JSP发布地图服务 java的一些基本概念 .NET启动时,出现无法加载MSXML3.dll ArcIMS 开发学习笔记(一)
使用jxl读和写Excel文件
Tony Wu · 2005-10-17 · via 博客园 - Tony Wu

最近和Excel频繁亲密接触,主要将N个Excel表中的数据拷贝到另外的Excel表中规整为二维结构以便入库。但是有些表存在合并单元格的情况,甚是恼火,怎么办哪?好在这N个Excel表结构还比较一致,可以写程序在指定位置读取,然后再写入到新的Excel表中,这样就OK了。这里面主要用到一个组件JXL.

jxl的安装:
主要就是将jxl的包放在WEB-INF的classes下面(如果下载到的是.jar文件,就放在lib下面).别忘了将jxl包中的common文件夹也放在WEB-INF下面.

jxl的使用:
主要的功能就是读Excel文件和写Excel文件

<b>读:</b>
读的时候是这样的一个思路,先用一个输入流(InputStream)得到Excel文件,然后用jxl中的Workbook得到工作薄,用Sheet从工作薄中得到工作表,用Cell得到工作表中得某个单元格.
InputStream->Workbook->Sheet->Cell,就得到了excel文件中的单元格

代码:
<%@ page contentType="text/html; charset=gb2312" %>
<%@  page  import="java.io.*,jxl.*,jxl.write.*,jxl.write.*,jxl.format.*"  %> 
String path="c:\\excel.xls";//Excel文件URL
InputStream is = new FileInputStream(path);//写入到FileInputStream
jxl.Workbook wb = Workbook.getWorkbook(is); //得到工作薄     
jxl.Sheet st = wb.getSheet(0);//得到工作薄中的第一个工作表
Cell cell=st.getCell(0,0);//得到工作表的第一个单元格,即A1
String content=cell.getContents();//getContents()将Cell中的字符转为字符串
wb.close();//关闭工作薄
is.close();//关闭输入流


我们可以通过Sheet的getCell(x,y)方法得到任意一个单元格,x,y和excel中的坐标对应.
例如A1对应(0,0),A2对应(0,1),D3对应(3,2).Excel中坐标从A,1开始,jxl中全部是从0开始.
还可以通过Sheet的getRows(),getColumns()方法得到行数列数,并用于循环控制,输出一个sheet中的所有内容.

<b>写:</b>
往Excel中写入内容主要是用jxl.write包中的类.
思路是这样的:
OutputStream<-WritableWorkbook<-WritableSheet<-Label
这里面Label代表的是写入Sheet的Cell位置及内容.
代码:

<%@ page contentType="text/html; charset=gb2312" %>
<%@  page  import="java.io.*,jxl.*,jxl.write.*,jxl.write.*,jxl.format.*"  %>
OutputStream os=new  FileOutputStream("c:\\test.xls");//输出的Excel文件URL
WritableWorkbook wwb = Workbook.createWorkbook(os);//创建可写工作薄
WritableSheet ws = wwb.createSheet("sheet1", 0);//创建可写工作表
Label labelCF=new Label(0, 0, "hello");//创建写入位置和内容
ws.addCell(labelCF);//将Label写入sheet中

Label的构造函数Label(int x, int y,String aString)xy意同读的时候的xy,aString是写入的内容.

WritableFont wf = new WritableFont(WritableFont.TIMES, 12, WritableFont.BOLD, false);//设置写入字体
WritableCellFormat wcfF = new WritableCellFormat(wf);//设置CellFormat
Label labelCF=new Label(0, 0, "hello");//创建写入位置,内容和格式

Label的另一构造函数Label(int c, int r, String cont, CellFormat st)可以对写入内容进行格式化,设置字体及其它的属性.

现在可以写了
wwb.write();
写完后关闭
wwb.close();
输出流也关闭吧
os.close;

OK,只要把读和写结合起来,就可以在N个Excel中读取数据写入你希望的Excel新表中,还是比较方便的.