码迷,mamicode.com
首页 > 编程语言 > 详细

poi----java操作java对象生成execl表单

时间:2014-10-09 15:20:53      阅读:330      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   color   io   os   ar   java   

 1.Apache POI简介

Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能。 .NET的开发人员则可以利用NPOI (POI for .NET) 来存取 POI 的功能。

2.POI结构

HSSF - 提供读写Microsoft Excel XLS格式档案的功能。
XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能。
HWPF - 提供读写Microsoft Word DOC格式档案的功能。
HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
HDGF - 提供读Microsoft Visio格式档案的功能。
HPBF - 提供读Microsoft Publisher格式档案的功能。
HSMF - 提供读Microsoft Outlook格式档案的功能。

 

3.生成execl的代码

bubuko.com,布布扣
  1 package com.bjsxt.sxf.test;
  2 
  3 
  4 import java.io.File;
  5 import java.io.FileNotFoundException;
  6 import java.io.FileOutputStream;
  7 import java.io.IOException;
  8 import java.io.OutputStream;
  9 import java.util.Date;
 10 
 11 import org.apache.poi.hssf.usermodel.HSSFSheet;
 12 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 13 import org.apache.poi.hssf.util.CellRangeAddress;
 14 import org.apache.poi.hssf.util.HSSFColor;
 15 import org.apache.poi.ss.usermodel.Cell;
 16 import org.apache.poi.ss.usermodel.CellStyle;
 17 import org.apache.poi.ss.usermodel.CreationHelper;
 18 import org.apache.poi.ss.usermodel.Font;
 19 import org.apache.poi.ss.usermodel.IndexedColors;
 20 import org.apache.poi.ss.usermodel.Row;
 21 import org.apache.poi.ss.usermodel.Workbook;
 22 
 23 
 24 /**
 25  * 操作java代码生成execl表格
 26 * @ClassName: JavaToExcel 
 27 * @Description: TODO(这里用一句话描述这个类的作用) 
 28 * @author 尚晓飞
 29 * @date 2014-10-9 上午10:21:54 
 30 *
 31  */
 32 public class JavaToExcel {
 33     
 34     public static void main(String[] args) throws IOException {
 35         //创建Workbook对象(这一个对象代表着对应的一个Excel文件)  
 36         //HSSFWorkbook表示以xls为后缀名的文件  
 37         HSSFWorkbook wb=new HSSFWorkbook();
 38         //获得CreationHelper对象,这个应该是一个帮助类  
 39         CreationHelper helper = wb.getCreationHelper(); 
 40         //创建Sheet并给名字(表示Excel的一个Sheet)  
 41         HSSFSheet sheet1 = wb.createSheet("student01");        
 42         //Row表示一行Cell表示一列  
 43         Row row = null;  
 44         Cell cell = null;  
 45         for(int i=0;i<60;i++){  
 46             //获得这个sheet的第i行  (行是从0开始的,0是第一行)
 47             row = sheet1.createRow(i);  
 48             //设置行长度自动             
 49             //row.setHeight((short)500);  
 50             row.setHeightInPoints(20);  
 51             //row.setZeroHeight(true);  
 52             for(int j=0;j<25;j++){         
 53                 //设置每个sheet每一列的宽度,自动,根据内容的最大长度确定。  
 54                 sheet1.autoSizeColumn(j, true);  
 55                 //创建一个基本的样式  
 56                CellStyle cellStyle =  JavaToExcel.createStyleCell(wb);  
 57                 //获得这一行的每j列  
 58                 cell = row.createCell(j);  
 59                 if(j==0){  
 60                     //设置文字在单元格里面的位置  
 61                     cellStyle = JavaToExcel.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_LEFT, CellStyle.VERTICAL_BOTTOM);  
 62                     //先创建字体样式,并把这个样式加到单元格的字体里面  
 63                     cellStyle.setFont(createFonts(wb));  
 64                     //把这个样式加到单元格里面  
 65                     cell.setCellStyle(cellStyle);                     
 66                     //给单元格设值  
 67                    if(i%2==0){
 68                        cell.setCellValue("尚晓飞是个大坏蛋dsafdsagfdsgserthgfdhytjfdsadfdsagrea"); 
 69                    }else{
 70                        cell.setCellValue("尚晓飞是个大坏蛋"); 
 71                    }
 72                     
 73                 }else if(j==1){  
 74                     //设置文字在单元格里面的位置  
 75                     cellStyle = JavaToExcel.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);  
 76                     //设置这个样式的格式(Format)  
 77                     cellStyle = JavaToExcel.setCellFormat(helper,cellStyle, "#,##0.0000");                    
 78                     //先创建字体样式,并把这个样式加到单元格的字体里面  
 79                     cellStyle.setFont(createFonts(wb));  
 80                     //把这个样式加到单元格里面  
 81                     cell.setCellStyle(cellStyle);  
 82                     //给单元格设值  
 83                     cell.setCellValue(new Date());  
 84                 }else if(j==2){  
 85                     cellStyle = JavaToExcel.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);                      
 86                     cellStyle.setFont(createFonts(wb));  
 87                     cell.setCellStyle(cellStyle);  
 88                     cell.setCellValue(helper.createRichTextString("RichString"+i+j));                     
 89                 }else if(j==3){  
 90                     cellStyle = JavaToExcel.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);  
 91                     cellStyle = JavaToExcel.setCellFormat(helper,cellStyle, "MM-yyyy-dd");  
 92                     cell.setCellStyle(cellStyle);  
 93                     cell.setCellValue(new Date());  
 94                 }else if(j==24){  
 95                     cellStyle = JavaToExcel.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);  
 96                     cellStyle.setFont(createFonts(wb));  
 97                     //设置公式  
 98                     cell.setCellFormula("SUM(E"+(i+1)+":X"+(i+1)+")");                    
 99                 }else{                    
100                     cellStyle = JavaToExcel.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);  
101                     cellStyle = JavaToExcel.setFillBackgroundColors(cellStyle,IndexedColors.ORANGE.getIndex(),IndexedColors.ORANGE.getIndex(),CellStyle.SOLID_FOREGROUND);  
102                     cell.setCellStyle(cellStyle);  
103                     cell.setCellValue("");  
104                 }  
105             } 
106             
107             
108             
109         }  
110         
111       //合并单元格
112         //参数含义:new CellRangeAddress(a, b, c,d)
113         //a和c:第几行  b和d是第几列   行和列的下标从0开始   0表示第一行或第一列
114         /**
115          * 重点注意事项:
116           1.单元格CELL和ROW对象下标都是从0开始的。
117           2.单元格合并时new CellRangeAddress(a, b, c,d)a的值的行号必须要比c的行号小,如果大于c就不能正常合并单元格
118           3.合并单元格的时候要合并的单单元格必须先创建,这样方便后面再次获取这个单元格来填充数据,主要就是因为合并时不能由后向前进行合并引起的。 
119          */
120         sheet1.addMergedRegion(new CellRangeAddress(0, 0, 0,24));
121         Cell cell2=sheet1.getRow(0).getCell(0);
122         cell2.setCellValue("将java中的对象转换成execl表格并保存的表内容");
123       
124         
125         //输出  
126         OutputStream os;
127         try {
128             os = new FileOutputStream(new File("c://JavaToExcel.xls"));
129               wb.write(os);  
130               os.close();     
131         } catch (FileNotFoundException e) {
132             // TODO Auto-generated catch block
133             e.printStackTrace();
134         }  
135          
136         
137     }
138     
139     
140     /** 
141      * 边框 
142      * @param wb 
143      * @return 
144      */  
145     public static CellStyle createStyleCell(Workbook wb){  
146         CellStyle cellStyle = wb.createCellStyle();  
147         //设置一个单元格边框样式  
148         cellStyle.setBorderBottom(CellStyle.BORDER_THIN);  
149         cellStyle.setBorderTop(CellStyle.BORDER_THIN);  
150         cellStyle.setBorderLeft(CellStyle.BORDER_THIN);  
151         cellStyle.setBorderRight(CellStyle.BORDER_THIN);  
152         /**
153          * 
154              CellStyle.BORDER_DOUBLE      双边线   
155              CellStyle.BORDER_THIN        细边线   
156              CellStyle.BORDER_MEDIUM      中等边线   
157              CellStyle.BORDER_DASHED      虚线边线   
158              CellStyle.BORDER_HAIR        小圆点虚线边线   
159              CellStyle.BORDER_THICK       粗边线  
160          */
161         //设置一个单元格边框颜色  
162         cellStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());  
163         cellStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());  
164         cellStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());  
165         cellStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());          
166         return cellStyle;  
167     }  
168     /** 
169      * 设置文字在单元格里面的位置 
170      * CellStyle.ALIGN_CENTER 
171      * CellStyle.VERTICAL_CENTER 
172      * @param cellStyle 
173      * @param halign 
174      * @param valign 
175      * @return 
176      */  
177     public static CellStyle setCellStyleAlignment(CellStyle cellStyle,short halign,short valign){  
178         //设置上下  
179         cellStyle.setAlignment(CellStyle.ALIGN_LEFT);  
180         //设置左右  
181         cellStyle.setVerticalAlignment(CellStyle.VERTICAL_BOTTOM);  
182         return cellStyle;  
183     }  
184     /** 
185      * 格式化单元格 
186      * 如#,##0.00,m/d/yy去HSSFDataFormat或XSSFDataFormat里面找 
187      * @param cellStyle 
188      * @param fmt 
189      * @return 
190      */  
191     public static CellStyle setCellFormat(CreationHelper helper,CellStyle cellStyle,String fmt){  
192         //还可以用其它方法创建format  
193         cellStyle.setDataFormat(helper.createDataFormat().getFormat(fmt));  
194         return cellStyle;  
195     }  
196     /** 
197      * 前景和背景填充的着色 
198      * @param cellStyle 
199      * @param bg IndexedColors.ORANGE.getIndex(); 
200      * @param fg IndexedColors.ORANGE.getIndex(); 
201      * @param fp CellStyle.SOLID_FOREGROUND 
202      * @return 
203      */  
204     public static CellStyle setFillBackgroundColors(CellStyle cellStyle,short bg,short fg,short fp){  
205         //cellStyle.setFillBackgroundColor(bg);  
206         cellStyle.setFillForegroundColor(fg);  
207         cellStyle.setFillPattern(fp);  
208         return cellStyle;  
209     }  
210     /** 
211      * 设置字体 
212      * @param wb 
213      * @return 
214      */  
215     public static Font createFonts(Workbook wb){  
216         //创建Font对象  
217         Font font = wb.createFont();  
218         //设置字体  
219         font.setFontName("黑体");  
220         //着色  
221         font.setColor(HSSFColor.BLUE.index);  
222         //斜体  
223         font.setItalic(true);  
224         //字体大小  
225         font.setFontHeight((short)300);  
226         return font;  
227     }  
228 }
View Code

 

poi----java操作java对象生成execl表单

标签:des   style   blog   http   color   io   os   ar   java   

原文地址:http://www.cnblogs.com/shangxiaofei/p/4012737.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!