同行整理,简单明了,快速上手!

=============================正文1============================

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

jxl的安装:

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

jxl的使用:

主要的功能就是读Excel文件和写Excel文件

读:

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

InputStream->Workbook->Sheet->Cell,就得到了excel文件中的单元格

代码:

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中的所有内容.

写:

往Excel中写入内容主要是用jxl.write包中的类.

思路是这样的:

OutputStream

这里面Label代表的是写入Sheet的Cell位置及内容.

代码:

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新表中,还是比较方便的.

=============================正文2============================

在这里,我使用的是一个叫Java Excel API的东西,类似的还有jakarta的POI,不过感觉那个

太复杂了点儿。而且jxl对中文的支持相当的好,至少我在用的过程中一点问题没出。

二、特性

可以读取Excel 95, 97, 2000文件

可以读或写Excel 97及其以后版本的的公式(不过我发现好像有bug)

生成Excel 97格式的电子表格

支持字体、数字和日期格式化

支持单元格的颜色和阴影

可以编辑现有的文件

三、读文件

//声明一下,记得后面要关闭哦。。

Workbook workbook = null;

try {

workbook = Workbook.getWorkbook(new File("d:\\temp\\TestRead.xls"));

} catch (Exception e) {

throw new Exception("file to import not found!");

}

Sheet sheet = workbook.getSheet(0);

Cell cell = null;

int columnCount=3;

int rowCount=sheet.getRows();

for (int i = 0; i

for (int j = 0; j

//注意,这里的两个参数,第一个是表示列的,第二才表示行

cell=sheet.getCell(j, i);

//要根据单元格的类型分别做处理,否则格式化过的内容可能会不正确

if(cell.getType()==CellType.NUMBER){

System.out.print(((NumberCell)cell).getvalue());

}

else if(cell.getType()==CellType.DATE){

System.out.print(((DateCell)cell).getDate());

}

else{

System.out.print(cell.getContents());

}

//System.out.print(cell.getContents());

System.out.print("\t");

}

System.out.print("\n");

}

//关闭它,否则会有内存泄露

workbook.close();

写:wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

在Java中向Excel文件写入内容

四、导出数据到Excel文件中

下面的例子,设置了数字、日期的格式,还有字体,颜色等。

File tempFile=new File("d:/temp/output.xls");

WritableWorkbook workbook = Workbook.createWorkbook(tempFile);

WritableSheet sheet = workbook.createSheet("TestCreateExcel", 0);

//一些临时变量,用于写到excel中

Label l=null;

jxl.write.Number n=null;

jxl.write.DateTime d=null;

//预定义的一些字体和格式,同一个Excel中最好不要有太多格式

WritableFont headerFont = new WritableFont(WritableFont.ARIAL, 12, WritableFont.BOLD, false, Underlinestyle.NO_UNDERLINE, jxl.format.Colour.BLUE);

WritableCellformat headerformat = new WritableCellformat (headerFont);

WritableFont titleFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false, Underlinestyle.NO_UNDERLINE, jxl.format.Colour.RED);

WritableCellformat titleformat = new WritableCellformat (titleFont);

WritableFont detFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false, Underlinestyle.NO_UNDERLINE, jxl.format.Colour.BLACK);

WritableCellformat detformat = new WritableCellformat (detFont);

Numberformat nf=new Numberformat("0.00000");  //用于Number的格式

WritableCellformat priceformat = new WritableCellformat (detFont, nf);

Dateformat df=new Dateformat("yyyy-MM-dd");//用于日期的

WritableCellformat dateformat = new WritableCellformat (detFont, df);

//剩下的事情,就是用上面的内容和格式创建一些单元格,再加到sheet中

l=new Label(0, 0, "用于测试的Excel文件", headerformat);

sheet.addCell(l);

//add Title

int column=0;

l=new Label(column++, 2, "标题", titleformat);

sheet.addCell(l);

l=new Label(column++, 2, "日期", titleformat);

sheet.addCell(l);

l=new Label(column++, 2, "货币", titleformat);

sheet.addCell(l);

l=new Label(column++, 2, "价格", titleformat);

sheet.addCell(l);

//add detail

int i=0;

column=0;

l=new Label(column++, i+3, "标题 "+i, detformat);

sheet.addCell(l);

d=new DateTime(column++, i+3, new java.util.Date(), dateformat);

sheet.addCell(d);

l=new Label(column++, i+3, "CNY", detformat);

sheet.addCell(l);

n=new jxl.write.Number(column++, i+3, 5.678, priceformat);

sheet.addCell(n);

i++;

column=0;

l=new Label(column++, i+3, "标题 "+i, detformat);

sheet.addCell(l);

d=new DateTime(column++, i+3, new java.util.Date(), dateformat);

sheet.addCell(d);

l=new Label(column++, i+3, "SGD", detformat);

sheet.addCell(l);

n=new jxl.write.Number(column++, i+3, 98832, priceformat);

sheet.addCell(n);

//设置列的宽度

column=0;

sheet.setColumnView(column++, 20);

sheet.setColumnView(column++, 20);

sheet.setColumnView(column++, 10);

sheet.setColumnView(column++, 20);

workbook.write();

workbook.close();

posted on 2007-10-26 09:08 lk 阅读(2747) 评论(1)  编辑  收藏 所属分类: j2se

java jxl 写 excel文件_使用jxl读和写Excel文件(速成)相关推荐

  1. linux下将只读文件改为可读可写

    将myredis文件夹下的redis.conf文件改为可读可写 chmod 666 /myredis/redis.conf

  2. 嵌入式Linux 的Cramfs 根文件系统配置成可读可写

    嵌入式Linux 的Cramfs 根文件系统配置成可读可写  1.概述 从软件角度上看,构建基于ARM技术的linux系统要涉及到引导加载程序.Linux内核.文件系统.用户应用程序几部分的设计.文件 ...

  3. 进程P1、P2、P3共享一个表格F,P1对F只读不写,P2对F只写不读,P3对F先读后写。进程可同时读F,但有进程写时,其他进程不能读和写。

    进程P1.P2.P3共享一个表格F,P1对F只读不写,P2对F只写不读,P3对F先读后写.进程可同时读F,但有进程写时,其他进程不能读和写.要求:(1)正常运行时不能产生死锁.(2)F的并发度要高. ...

  4. python 读plt文件_用python读Excel文件

    在IC设计.验证.后端中经常会用Excel来做配置文件.寄存器表.定义后端SDC参数等,不管Excel好不好用,但学习成本低啊. Excel文件的结构 Excel文件主要由工作簿(book).工作表( ...

  5. excel转las文件_这3种Word、Excel格式不变的互转方法,实在太好用了

    日常工作中用Word写总结.写报告,写分析,一定离不开数据支持.但在制作的过程中你一定碰到过这些问题:Excel里做的表格.图表,一复制到word就变的乱七八糟! 那么,有没有什么好的方法,即省时,又 ...

  6. h5页面如何预览excel文件_在网页中预览excel表格文件

    项目需求在前端页面中实现预览excel表格的功能,上网了解之后大致总结为一下几种方法. 1.office文档转换为pdf,再转swf,然后通过网页加载flash进行预览 2.通过 xlsx.js,js ...

  7. java调用项目中的文件_详解eclipse项目中.classpath文件的使用

    1 前言 在使用eclipse或者myeclipse进行java项目开发的时候,每个project(工程)下面都会有一个.classpath文件,那么这个文件究竟有什么作用? 2 作用 .classp ...

  8. android选择多个文件_一分钟合并多个Excel、PDF文件,3种方法任你选择,好用到没朋友...

    一分钟合并多个Excel.PDF文件,3种方法任你选择,好用到没朋友 前情提要: Excel.PDF多个文件怎样合并成一个文件?需求场景: PDF文件合并 当一份完成的PDF资料分为很多份的时候,我们 ...

  9. java程序解析perl文件_如何从shell脚本执行perl文件

    我有一个关于如何在shell脚本中执行perl文件的问题 我现在有两个文件,"test.sh"和"test.pl",这里是我的脚本示例 SHELL脚本 #!/b ...

最新文章

  1. PHP气缸种类,气缸分类方法有哪些及气缸的种类
  2. centos6 安装 redis
  3. C语言使用1到9求出所有k个数字的所有组合的算法(附完整源码)
  4. LogMiner学习笔记
  5. python 中main函数总结
  6. 巴萨队徽_巴塞罗那选择Linux,Apple的Lisa OS开源,更多新闻
  7. linux数据库监听配了两个,Oracle数据库和监听随LINUX系统启动
  8. python从其他文件导入模块_Python模块可以使用其他文件的导入吗?
  9. 美国签证过不了,ICLR 2020搬到埃塞俄比亚,同性恋学者:不去,保命要紧
  10. 去年微软颁发1360万美元奖励,中国提交的漏洞报告数量位列前三强
  11. mysql 如何解决字段不区分大小写的问题
  12. 语音识别论文.doc
  13. Android开发的内存问题
  14. Linux系统 查看系统版本、CPU、内存、主频等信息
  15. 进制转换简单实现代码
  16. 学习编程需要什么英语基础?
  17. 【每日英语】英语语法
  18. 微信界面Android实现
  19. Latex 加下角标
  20. 基于PHP的大学生问卷调查系统

热门文章

  1. 计算机ata考试题库答案,ATA考试系统题库【机房系统】
  2. C语言:【入门】求长方形的周长和面积
  3. 【WebServerProgramming】Ch.5 基本语法
  4. 批量删除win7下的隧道适配器
  5. 读书笔记--凯文凯利的“必然”
  6. 什么是Essay和Article?
  7. 使用Jetson Nano和树莓派相机实现视频流
  8. Mysql--day03
  9. 1170 - BLOB/TEXT column 'CustomerName' used in key specification without a key length
  10. 2021年全球与中国激光清洗机行业市场规模及发展前景分析