设为首页 加入收藏

TOP

POI通过模板导出EXCEL文件(一)
2017-10-13 09:47:39 】 浏览:7816
Tags:POI 通过 模板 导出 EXCEL 文件

  一般的EXCEL导出使用POI先创建一个HSSFWorkbook,然后通过不断创建HSSFRow,HSSFCell后设置单元格内容便可以完成导出。

  这次在项目中需要用到模板,导出的内容包括(1.模板中的内容、样式。2.自己需要新增的内容、样式。),还需要设置单元格的样式,在网上搜了一些blog,完成后记录一下。

  分析这次需求,最关键的就是如何获取到填充了模板的新HSSFWorkbook,如果获取到它,我们可以熟练的往里面添加内容。

1 File fi = new File("F:/usr/user.xls");
2 POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(fi));  
3 HSSFWorkbook wb = new HSSFWorkbook(fs);

  这样便可以获取到我们熟悉的HSSFWorkbook对象了,操作熟悉的HSSFWorkbook对象想必爽歪歪了。这里还有一个需求,就是需要设置一些单元格的样式,这在之前我也没有接触到过,记录下来。

1  //生成单元格样式
2 HSSFCellStyle cellStyle = wb.createCellStyle(); //wb是上一步创建的HSSFWorkbook对象
3 //设置背景颜色
4 cellStyle.setFillForegroundColor(HSSFColor.RED.index);
5 //solid 填充  foreground  前景色
6 cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

   这样便创建完成了一个单元格的样式,接下来便是在特定的单元格添加样式。

1 //获取特定的单元格
2 HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);  
3 //设置样式
4 cell.setCellStyle(cellStyle);  //cellStyle是上一步创建的HSSFCellStyle对象

  如此,整个需求基本完成。对于整个过程中需要用到的其他方法,这里写了一个封装类。

        **  有些方法可能只适用此项目,使用时需要修改。

  1 package com.pole.educate.excel;
  2 import java.io.File;
  3 import java.io.FileInputStream;
  4 import java.io.FileNotFoundException;
  5 import java.io.FileOutputStream;
  6 import java.io.IOException;
  7 import java.util.Calendar;
  8 import java.util.Date;
  9 
 10 import org.apache.poi.hssf.usermodel.HSSFCell;
 11 import org.apache.poi.hssf.usermodel.HSSFCellStyle;
 12 import org.apache.poi.hssf.usermodel.HSSFRow;
 13 import org.apache.poi.hssf.usermodel.HSSFSheet;
 14 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 15 import org.apache.poi.hssf.util.HSSFColor;
 16 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 17 import org.apache.poi.ss.usermodel.RichTextString;  
 18 /** 
 19  * 共分为六部完成根据模板导出excel操作:<br/> 
 20  * 第一步、设置excel模板路径(setSrcPath)<br/> 
 21  * 第二步、设置要生成excel文件路径(setDesPath)<br/> 
 22  * 第三步、设置模板中哪个Sheet列(setSheetName)<br/> 
 23  * 第四步、获取所读取excel模板的对象(getSheet)<br/> 
 24  * 第五步、设置数据(分为6种类型数据:setCellStrValue、setCellDateva lue、setCellDoubleva lue、setCellBoolValue、setCellCalendarValue、setCellRichTextStrValue)<br/> 
 25  * 第六步、完成导出 (exportToNewFile)<br/> 
 26  *  
 27  * @author Administrator 
 28  * 
 29  */  
 30 public class ExcelWriter {
 31     POIFSFileSystem fs = null;  
 32     HSSFWorkbook wb = null;  
 33     HSSFSheet sheet = null;
 34     HSSFCellStyle cellStyle = null;
 35     
 36     private String srcXlsPath = "";//  excel模板路径  
 37     private String desXlsPath = "";  // 生成路径
 38     private String sheetName = "";  
 39 
 40     /** 
 41      * 第一步、设置excel模板路径 
 42      * @param srcXlsPaths 
 43      */  
 44     public void setSrcPath(String srcXlsPaths) {  
 45         this.srcXlsPath = srcXlsPaths;  
 46     }  
 47   
 48     /** 
 49      * 第二步、设置要生成excel文件路径 
 50      * @param desXlsPaths
 51      * @throws FileNotFoundException 
 52      */  
 53     public void setDesPath(String desXlsPaths) throws FileNotFoundException {  
 54         this.desXlsPath = desXlsPaths;
 55     }  
 56   
 57     /** 
 58      * 第三步、设置模板中哪个Sheet列 
 59      * @param sheetName 
 60      */  
 61     public void setSheetName(String sheetName) {  
 62         this.sheetName = sheetName;  
 63     }  
 64   
 65     /** 
 66      * 第四步、获取所读取excel模板的对象 
 67      */  
 68     public void getSheet() {  
 69         try {  
 70             File fi = new File(srcXlsPath);  
 71             if(!fi.exists()){  
 72                 //System.out.println("模板文件:"+srcXlsPath+"不存在!");  
 73                 return;  
 74             }  
 75             fs = n
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Coursera Algorithms week4 基础.. 下一篇JOSN快速入门

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目