论坛首页 Java企业应用论坛

JAVA简单写EXCEL文件

浏览 6295 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-02-28  
java 代码
java 代码
  1. import jxl.Workbook;   
  2. import jxl.write.Label;   
  3. import jxl.write.WritableSheet;   
  4. import jxl.write.WritableWorkbook;   
  5. import jxl.write.WriteException;   
  6. import jxl.write.biff.RowsExceededException;  
jxl 包
java 代码
  1. try {   
  2.     SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");   
  3.     String fileName = "d:\\" + sdf.format(new Date()) + ".xls";  
  4.       
  5.     WritableWorkbook book = Workbook.createWorkbook(new File(fileName));  
  6.       
  7.     // -- 第一个参数是Sheet名,第二个参数是Sheet下标  
  8.     // -- 下标是整数,只起标识作用,建立的时候会以create顺序建立,本例生成的EXCEL文件第一个Sheet是sheet1  
  9.     WritableSheet sheet1 = book.createSheet("第一页",100000);  
  10.     WritableSheet sheet2 = book.createSheet("第二页",4);  
  11.       
  12.     // -- 参数:先定位列,再定位行,再表格内容  
  13.     Label labTitle1 = new Label(0,0,"姓名");  
  14.     Label labTitle2 = new Label(1,0,"性别");  
  15.     Label labTitle3 = new Label(2,0,"移动电话");  
  16.     Label labTitle4 = new Label(3,0,"固定电话");  
  17.     Label labTitle5 = new Label(4,0,"家庭电话");  
  18.       
  19.     sheet2.addCell(labTitle1);  
  20.     sheet2.addCell(labTitle2);  
  21.     sheet2.addCell(labTitle3);  
  22.     sheet2.addCell(labTitle4);  
  23.     sheet2.addCell(labTitle5);  
  24.       
  25.     for(int i=1;i<3;i++) {  
  26.         Label lab1 = new Label(0,i,"老师");  
  27.         Label lab2 = new Label(1,i,"老师2");   
  28.         sheet2.addCell(lab1);   
  29.         sheet2.addCell(lab2);   
  30.     }   
  31.     book.write();   
  32.     book.close();   
  33. catch (IOException e) {   
  34.     e.printStackTrace();   
  35. catch (RowsExceededException e) {   
  36.     e.printStackTrace();   
  37. catch (WriteException e) {   
  38.     e.printStackTrace();   
  39. }  

 

姓名 性别 移动电话 固定电话 家庭电话
老师 老师2      
老师 老师2      

   发表时间:2007-02-28  
那个for怎么又有问题了。。。。

for(int i=1;i<3;i++) {
0 请登录后投票
   发表时间:2007-02-28  
配上实际效果的截图估计更能说明问题(也更能吸引注意力)……

在JavaEye的rich editer下面写好的代码不能够修改确实是一个令人烦恼的问题呢!
0 请登录后投票
   发表时间:2007-02-28  
Allen 写道
配上实际效果的截图估计更能说明问题(也更能吸引注意力)……

在JavaEye的rich editer下面写好的代码不能够修改确实是一个令人烦恼的问题呢!


最好用BBCODE来发表code
0 请登录后投票
   发表时间:2007-03-01  

关于Excel的处理,其实我觉得ExcelUtils还不错,这个组件好像知名度不高,发现在JavaEye2005年就有人在推广了,不过关注的人比较少,觉得挺可惜的。

因我一直在使用这个工具,既然这个帖子也是关于如何写Excel的所以就在这个帖子里简单介绍一下。

以下是我的调用ExcelUitls的代码(Groovy脚本):

java 代码
  1. import java.io.FileInputStream;   
  2. import net.sf.excelutils.ExcelUtils;   
  3.   
  4. String templateFile = self.metadata.project.path + "/template/" + self.value;                                  
  5. def response = ctxs.httpContext.response;   
  6. FileInputStream fin = new FileInputStream(templateFile);   
  7. try{   
  8.     response.reset();   
  9.     response.setContentType("application/vnd.ms-excel");   
  10.     response.setHeader("Content-Disposition""attachment; filename=\"" + System.currentTimeMillis() + ".xls\"");   
  11.     ExcelUtils.export(fin, binding.getVariables(), response.getOutputStream());   
  12. }finally{   
  13.     fin.close();   
  14. }   
  15.   
  16. return;  

说明:

ExcelUtils是工具接口,export方法用来生成Excel,上面调用时export方法的参数依次是:InputStream, Ojbect, OutputStream。

binding.getVariables()的返回值是Map。

下面用以一个实际的例子来说明:

我们用Groovy脚本构造测试数据

java 代码
  1. title="测试";   
  2. dateString="2007-03-01";   
  3. idName="测试";   
  4.   
  5. datas = [   
  6.     ["id":"1""name":"名称1""timeRate":"98""payRate":"96"],   
  7.     ["id":"2""name":"名称2""timeRage":"93""payRate":"23"]   
  8. ];   
  9.   
  10. return "success";  

附件查看Excel模版和输出结果。

关于ExcelUtils可以参看http://excelutils.sourceforge.net.

  • excelExample.rar (4.5 KB)
  • 描述: Excel模版和输出结果。
  • 下载次数: 148
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics