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的代码

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

示例:生成报表【此示例生成学生信息表(应用到阿帕奇的poi和struts2下载)】

一:struts.xml关于生成报表的下载配置

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
  4. "http://struts.apache.org/dtds/struts-2.3.dtd">
  5.  
  6. <struts>
  7. <!-- 如果请求地址=actionName!methodName ,则该配置需要进行设置,否则访问地址错误-->
  8. <constant name="struts.enable.DynamicMethodInvocation" value="true" />
  9.  
  10. <!-- 开发模式 -->
  11. <constant name="struts.devMode" value="true" />
  12.  
  13. <!-- 编码格式过滤 -->
  14. <constant name="struts.i18n.encoding" value="utf-8"></constant>
  15.  
  16. <!-- 告诉struts.xml不要自己通过反射new,对象,去spring的ioc容器中找
  17. action中的class='spring中Ioc容器中对象的id'
  18. annotation注解生成对象默认情况下id值为是:类名首字符小写
  19. 需要加jar包struts-spring-plugin..jar
  20. -->
  21. <constant name="struts.objectFactory" value="spring"></constant>
  22.  
  23. <package name="default" namespace="/" extends="struts-default">
  24. <!-- actionName!methodName请求方式的配置 -->
  25. <action name="StudentAction" class="StudentAction">
  26. <result name="success">/page/success.jsp</result>
  27. <!-- 生成报表的下载返回 -->
  28. <result name="inputStu" type="stream">
  29. <param name="contentType">application/vnd.ms-excel;charset=UTF-8</param>
  30. <!-- 下载页文件名的显示,action中的属性 -->
  31. <param name="contentDisposition">attachment;fileName="${fileName}"</param>
  32. <!-- action中输入流属性的名字 -->
  33. <param name="inputName">stuReport</param>
  34. <!-- 读取字节数的大小1kb -->
  35. <param name="bufferSize">1024</param>
  36. </result>
  37. </action>
  38. <action name="PowerAction" class="PowerAction">
  39. <result name="success">/page/success.jsp</result>
  40. </action>
  41. </package>
  42. </struts>

二:生成报表的action类,以及方法和下载时应该设置的属性。与struts.xml配置相对应

  1. package com.bjsxt.sxf.action;
  2.  
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileNotFoundException;
  6. import java.io.InputStream;
  7. import java.io.UnsupportedEncodingException;
  8.  
  9. import org.apache.struts2.ServletActionContext;
  10.  
  11. import com.bjsxt.sxf.po.Student;
  12. import com.bjsxt.sxf.service.ClassRoomService;
  13. import com.bjsxt.sxf.service.StudentService;
  14.  
  15. public class StudentAction {
  16. private StudentService studentService;
  17. private ClassRoomService classRoomService;
  18.  
  19. //struts2下载两个属性
  20. private String fileName; //生成的execl的文件名
  21. private InputStream stuReport;//将项目根目录下生成的execl文件读入的客户端内存中的输入流
  22.  
  23. //此get方法是为了
  24. /**
  25. * ISO8859-1是页面上数据传输的格式,
  26. new String(fileName.getBytes("utf-8"),"iso8859-1");
  27. utf-8是你java项目格式(根据实际项目变更),目的是为了将中文文件名正确显示在页面上
  28. */
  29.  
  30. public String getFileName() {
  31. try {
  32. fileName=new String(this.fileName.getBytes("utf-8"),"ISO8859-1");
  33. } catch (UnsupportedEncodingException e) {
  34. // TODO Auto-generated catch block
  35. e.printStackTrace();
  36. }
  37. return fileName;
  38. }
  39.  
  40. public void setFileName(String fileName) {
  41. this.fileName = fileName;
  42. }
  43.  
  44. public InputStream getStuReport() {
  45. return stuReport;
  46. }
  47.  
  48. public void setStuReport(InputStream stuReport) {
  49. this.stuReport = stuReport;
  50. }
  51.  
  52. /**当前台请求触发该方法,则先生成execl表格,存放在项目根目录指定的文件下。然后利用struts2的下载将该execl下载到请求客户端的电脑上
  53. * 生成学生信息execl表格,并下载
  54. * @Title: reportStudent
  55. * @Description: TODO(这里用一句话描述这个方法的作用)
  56. * @return
  57. * @return String 返回类型
  58. * @author 尚晓飞
  59. * @date 2014-10-9 上午11:07:08
  60. */
  61. public String reportStudent(){
  62. try {
  63. fileName=studentService.stuList2Excel();
  64. String path=ServletActionContext.getServletContext().getRealPath("master")+File.separator+"report"+File.separator+fileName;
  65. stuReport=new FileInputStream(path);
  66. } catch (FileNotFoundException e) {
  67. // TODO Auto-generated catch block
  68. e.printStackTrace();
  69. }
  70. return "inputStu";
  71. }
  72.  
  73. public String findById(){
  74. studentService.findById(1);
  75. return null;
  76. }
  77.  
  78. public String findByIdClassRoom(){
  79. classRoomService.findById(1);
  80. return null;
  81. }
  82.  
  83. public ClassRoomService getClassRoomService() {
  84. return classRoomService;
  85. }
  86.  
  87. public void setClassRoomService(ClassRoomService classRoomService) {
  88. this.classRoomService = classRoomService;
  89. }
  90.  
  91. public StudentService getStudentService() {
  92. return studentService;
  93. }
  94.  
  95. public void setStudentService(StudentService studentService) {
  96. this.studentService = studentService;
  97. }
  98.  
  99. }

三:生成execl表格的业务类,并将execl存入项目根目录指定文件下(省去dao层与数据库交互的方法)

  1. package com.bjsxt.sxf.service.impl;
  2.  
  3. import java.io.File;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.io.OutputStream;
  8. import java.text.DateFormat;
  9. import java.text.SimpleDateFormat;
  10. import java.util.Date;
  11. import java.util.List;
  12.  
  13. import org.apache.poi.hssf.usermodel.HSSFCellStyle;
  14. import org.apache.poi.hssf.usermodel.HSSFSheet;
  15. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  16. import org.apache.poi.hssf.util.CellRangeAddress;
  17. import org.apache.poi.hssf.util.HSSFColor;
  18. import org.apache.poi.ss.usermodel.Cell;
  19. import org.apache.poi.ss.usermodel.CellStyle;
  20. import org.apache.poi.ss.usermodel.CreationHelper;
  21. import org.apache.poi.ss.usermodel.Font;
  22. import org.apache.poi.ss.usermodel.IndexedColors;
  23. import org.apache.poi.ss.usermodel.Row;
  24. import org.apache.struts2.ServletActionContext;
  25. import org.hibernate.dialect.IngresDialect;
  26.  
  27. import com.bjsxt.sxf.dao.StudentDao;
  28. import com.bjsxt.sxf.po.ClassRoom;
  29. import com.bjsxt.sxf.po.Student;
  30. import com.bjsxt.sxf.service.StudentService;
  31. /**
  32. * 学生的业务类
  33. * @ClassName: StudentServiceImpl
  34. * @Description: TODO(这里用一句话描述这个类的作用)
  35. * @author 尚晓飞
  36. * @date 2014-10-9 下午5:24:04
  37. *
  38. */
  39. public class StudentServiceImpl implements StudentService{
  40. private StudentDao studentDao;
  41.  
  42. /**
  43. * 添加一个学生
  44. * @Title: addStudent
  45. * @Description: TODO(这里用一句话描述这个方法的作用)
  46. * @author 尚晓飞
  47. * @date 2014-10-9 下午5:24:29
  48. * @param student
  49. * @see com.bjsxt.sxf.service.StudentService#addStudent(com.bjsxt.sxf.po.Student)
  50. */
  51. @Override
  52. public void addStudent(Student student) {
  53. // TODO Auto-generated method stub
  54. studentDao.add(student);
  55.  
  56. }
  57.  
  58. /**
  59. * 查询出指定id的学生
  60. * @Title: findById
  61. * @Description: TODO(这里用一句话描述这个方法的作用)
  62. * @author 尚晓飞
  63. * @date 2014-10-9 下午5:24:42
  64. * @param id
  65. * @return
  66. * @see com.bjsxt.sxf.service.StudentService#findById(java.lang.Integer)
  67. */
  68. @Override
  69. public Student findById(Integer id) {
  70. Student student=studentDao.find(id);
  71. ClassRoom cls=student.getClassRoom();
  72. System.out.println("StudentServiceImpl.findById()"+cls.getName());
  73. return student;
  74. }
  75.  
  76. /**
  77. * 将学生信息生成excel表格,并写入项目根目录下
  78. * @Title: stuList2Excel
  79. * @Description: TODO(这里用一句话描述这个方法的作用)
  80. * @author 尚晓飞
  81. * @date 2014-10-9 上午11:28:57
  82. * @return
  83. * @see com.bjsxt.sxf.service.StudentService#stuList2Excel()
  84. */
  85. @Override
  86. public String stuList2Excel() {
  87. // TODO Auto-generated method stub
  88. //查询出所有学生的信息【要生成execl的java对象】
  89. List<Student> students=studentDao.queryAll();
  90. //标题行
  91. Date date=new Date();
  92. DateFormat format=new SimpleDateFormat("yyyy-MM-dd");
  93. String tilte=format.format(date)+"学生信息表";
  94.  
  95. //列名行
  96. String[] valueT={"学生id","学生姓名","学生性别","所在班级名称"};
  97.  
  98. //第一步:创建excel文件
  99. //HSSFWorkbook表示以xls为后缀名的文件
  100. HSSFWorkbook wb=new HSSFWorkbook();
  101. //获得CreationHelper对象,这个应该是一个帮助类
  102. CreationHelper helper = wb.getCreationHelper();
  103. //创建Sheet并给名字(表示Excel的一个Sheet)
  104. HSSFSheet sheet1 = wb.createSheet("学生信息表");
  105. HSSFCellStyle cellStyle = wb.createCellStyle();
  106.  
  107. //设置单元格边框
  108. //设置一个单元格边框样式
  109. cellStyle.setBorderBottom(CellStyle.BORDER_THICK);
  110. cellStyle.setBorderTop(CellStyle.BORDER_THICK);
  111. cellStyle.setBorderLeft(CellStyle.BORDER_THICK);
  112. cellStyle.setBorderRight(CellStyle.BORDER_THICK);
  113.  
  114. //设置一个单元格边框的颜色
  115. cellStyle.setRightBorderColor(IndexedColors.GREEN.getIndex());
  116. cellStyle.setLeftBorderColor(IndexedColors.GREEN.getIndex());
  117. cellStyle.setBottomBorderColor(IndexedColors.GREEN.getIndex());
  118. cellStyle.setTopBorderColor(IndexedColors.GREEN.getIndex());
  119.  
  120. //设置单元格内容显示的位置
  121. //上下
  122. cellStyle.setAlignment(CellStyle.ALIGN_CENTER);
  123. //设置左右
  124. cellStyle.setVerticalAlignment(CellStyle.VERTICAL_BOTTOM);
  125.  
  126. //设置字体
  127. Font font=wb.createFont();
  128. font.setFontName("黑体");
  129. font.setColor(HSSFColor.RED.index);
  130. font.setFontHeight((short)500);
  131. cellStyle.setFont(font);
  132.  
  133. //第二步:创建标题行(先创建单元格,再合并单元格)
  134. Row titleRow=sheet1.createRow(0);
  135. for(int i=0;i<valueT.length;i++){
  136. Cell cell=titleRow.createCell(i);
  137. cell.setCellStyle(cellStyle);
  138.  
  139. }
  140. //合并单元格
  141. sheet1.addMergedRegion(new CellRangeAddress(0, 0, 0,valueT.length-1));
  142. Cell cellTitle=titleRow.getCell(0);
  143. //标题行完成
  144. cellTitle.setCellValue(tilte);
  145. cellTitle.setCellStyle(cellStyle);
  146. //设置列的宽度为内容的最大长度【设置列的显示宽度,防止不遮盖内容】
  147. sheet1.autoSizeColumn(0, true);
  148.  
  149. //第三步:创建列名行
  150. Row rowT=sheet1.createRow(1);
  151. for(int i=0;i<valueT.length;i++){
  152. sheet1.autoSizeColumn(i, true);
  153. Cell cellT=rowT.createCell(i);
  154. cellT.setCellValue(valueT[i]);
  155. cellT.setCellStyle(cellStyle);
  156. }
  157.  
  158. //第四步创建内容行
  159. for(int a=0;a<students.size();a++){
  160. Row row=sheet1.createRow(a+2);
  161. Student student=students.get(a);
  162.  
  163. //id
  164. sheet1.autoSizeColumn(0, true);
  165. Cell cellId=row.createCell(0);
  166. cellId.setCellValue(student.getId());
  167. cellId.setCellStyle(cellStyle);
  168.  
  169. //姓名
  170. sheet1.autoSizeColumn(1, true);
  171. Cell cellName=row.createCell(1);
  172. cellName.setCellValue(student.getName());
  173. cellName.setCellStyle(cellStyle);
  174.  
  175. //性别
  176. sheet1.autoSizeColumn(2, true);
  177. Cell cellSex=row.createCell(2);
  178. cellSex.setCellValue(student.getSex());
  179. cellSex.setCellStyle(cellStyle);
  180.  
  181. //班级名称
  182. sheet1.autoSizeColumn(3, true);
  183. Cell cellClassName=row.createCell(3);
  184. cellClassName.setCellValue(student.getClassRoom().getName());
  185. cellClassName.setCellStyle(cellStyle);
  186.  
  187. }
  188.  
  189. //输出保存的文件名
  190. DateFormat format2=new SimpleDateFormat("yyyyMMddHHmmss");
  191. String fileName=format2.format(date)+"学生信息表.xls";
  192.  
  193. //创建一个存放学生信息表的文件在项目根目录下
  194. File file=new File(ServletActionContext.getServletContext().getRealPath("master")+File.separator+"report");
  195. if(!file.exists()){
  196. file.mkdir();
  197. }
  198. //输出
  199. OutputStream os;
  200. try {
  201. //输出到项目根目录下
  202. os = new FileOutputStream(file+File.separator+fileName);
  203. wb.write(os);
  204. os.close();
  205. } catch (IOException e) {
  206. // TODO Auto-generated catch block
  207. e.printStackTrace();
  208. }
  209.  
  210. return fileName;
  211. }
  212.  
  213. public StudentDao getStudentDao() {
  214. return studentDao;
  215. }
  216.  
  217. public void setStudentDao(StudentDao studentDao) {
  218. this.studentDao = studentDao;
  219. }
  220.  
  221. }

四:效果图

报表生成poi----java操作java对象生成execl表单的更多相关文章

  1. Java操作Sqoop对象

    Windows下使用Eclipse工具操作Sqoop1.4.6对象 Sqoop是用来在关系型数据库与Hadoop之间进行数据的导入导出,Windows下使用Eclipse工具操作时,需要先搭建好Had ...

  2. [Java拾遗五]使用Session防止表单重复提交

    申明:此文章属于转载, 转自博客: http://www.cnblogs.com/xdp-gacl/p/3859416.html在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没 ...

  3. java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例

    java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例HttpClient 测试类,提供get post方法实例 package com.zdz.httpclient; i ...

  4. django中ModelForm save方法 以及快速生成空表单或包含数据的表单 包含错误信息

    django中ModelForm学习系列一~save方法 Model代码 from django.db import models # Create your models here. class P ...

  5. MVC动态生成的表单:表单元素比较多 你就这样写

    MVC动态生成的表单:表单元素比较多 你就这样写: public ActionResult ShoudaanActionResult(FormCollection from,T_UserM user) ...

  6. java:JavaScript2:(setTimeout定时器,history.go()前进/后退,navigator.userAgent判断浏览器,location.href,五种方法获取标签属性,setAttribute,innerHTML,三种方法获取form表单信息,JS表单验证,DOM对象,form表单操作)

    1.open,setTimeout,setInterval,clearInterval,clearTimeout <!DOCTYPE> <html> <head> ...

  7. 【java学习】Servlet简单的表单程序(一)

    此文用于java学习,在此小记. 在此小Demo中使用到了Servlet,所以有必要了解一下Servlet的相关知识.(Servlet的相关知识摘抄自http://blog.csdn.net/jiuq ...

  8. 「小程序JAVA实战」小程序的表单组件(25)

    转自:https://idig8.com/2018/08/18/xiaochengxujavashizhanxiaochengxudebiaodanzujian25/ 来说下 ,小程序的基础组件.源码 ...

  9. java上传文件,提交表单必须要设置enctype="multipart/form-data"

    表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码.默认情况,这个编码格式是application/x-www-form-urlenc ...

随机推荐

  1. capistranorb

    远程服务器自动部署工具 https://capistranorb.com/

  2. this指向 - Node环境

    1.全局上下文中 this /* 1.全局上下文中的 this node环境下: 严格模式下: {} {} 报错 非严格模式下:{} {} {} */ 'use strict'; // 严格模式 // ...

  3. 【运维技术】kafka三实例集群环境搭建及测试使用

    kafka三实例集群环境搭建及测试使用 单机搭建分为两部分:1. 软件安装启动 2. 软件配置 软件安装启动: # 切换到目录 cd /app # 获取kafka最新安装包,这边使用的是镜像地址,可以 ...

  4. 反射获取成员方法(Method)

    1.1.1 反射公开的非静态的成员方法 Method getDeclaredMethod(String name,Class ... parameterTypes)获取某个方法. 说明: 1)在Cla ...

  5. Python3.x获取网页源码

    Python3.x获取网页源码 1,获取网页的头部信息以确定网页的编码方式: import urllib.request res = urllib.request.urlopen('http://ww ...

  6. 20145219《网络对抗技术》PC平台逆向破解之逆向与Bof基础

    20145219<网络对抗技术>PC平台逆向破解之逆向与Bof基础 实践目标 实践对象:一个名为pwn1的linux可执行文件. pwn1正常执行流程:main调用foo函数,foo函数会 ...

  7. 利用Html.css OPPO手机导航菜单的制作解析

    <body> <div id="top" class="auto"> <div class="nav"> ...

  8. Codeforces Round #169 (Div. 2) E. Little Girl and Problem on Trees dfs序+线段树

    E. Little Girl and Problem on Trees time limit per test 2 seconds memory limit per test 256 megabyte ...

  9. 【安全测试】Web应用安全之XSS跨站脚本攻击漏洞

    前言 以前都只是在各类文档中见到过XSS,也进行过相关的学习,但是都是一知半解,过了一段时间就忘了. 前几天我们收到了了一份标题为<XX账号昵称参数中存在存储XSS漏洞>的报告文档,来源是 ...

  10. windowplayer播放列表属性

    ArrayList a = new ArrayList(); a.Add("c:\\kugou\\林宇中 - 干物女.mp3"); a.Add("c:\\kugou\\海 ...