public ActionResult excelPrint() {
HSSFWorkbook workbook = new HSSFWorkbook();// 创建一个Excel文件
HSSFSheet sheet = workbook.createSheet();// 创建一个Excel的Sheet
sheet.createFreezePane(, );// 冻结
// 设置列宽
sheet.setColumnWidth(, );
sheet.setColumnWidth(, );
sheet.setColumnWidth(, );
sheet.setColumnWidth(, );
sheet.setColumnWidth(, );
sheet.setColumnWidth(, );
sheet.setColumnWidth(, );
sheet.setColumnWidth(, );
// Sheet样式
HSSFCellStyle sheetStyle = workbook.createCellStyle();
// 背景色的设定
sheetStyle.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index);
// 前景色的设定
sheetStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
// 填充模式
sheetStyle.setFillPattern(HSSFCellStyle.FINE_DOTS);
// 设置列的样式
for (int i = ; i <= ; i++) {
sheet.setDefaultColumnStyle((short) i, sheetStyle);
}
// 设置字体
HSSFFont headfont = workbook.createFont();
headfont.setFontName("黑体");
headfont.setFontHeightInPoints((short) );// 字体大小
headfont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 加粗
// 另一个样式
HSSFCellStyle headstyle = workbook.createCellStyle();
headstyle.setFont(headfont);
headstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中
headstyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 上下居中
headstyle.setLocked(true);
headstyle.setWrapText(true);// 自动换行
// 另一个字体样式
HSSFFont columnHeadFont = workbook.createFont();
columnHeadFont.setFontName("宋体");
columnHeadFont.setFontHeightInPoints((short) );
columnHeadFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
// 列头的样式
HSSFCellStyle columnHeadStyle = workbook.createCellStyle();
columnHeadStyle.setFont(columnHeadFont);
columnHeadStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中
columnHeadStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 上下居中
columnHeadStyle.setLocked(true);
columnHeadStyle.setWrapText(true);
columnHeadStyle.setLeftBorderColor(HSSFColor.BLACK.index);// 左边框的颜色
columnHeadStyle.setBorderLeft((short) );// 边框的大小
columnHeadStyle.setRightBorderColor(HSSFColor.BLACK.index);// 右边框的颜色
columnHeadStyle.setBorderRight((short) );// 边框的大小
columnHeadStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单元格的边框为粗体
columnHeadStyle.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色
// 设置单元格的背景颜色(单元格的样式会覆盖列或行的样式)
columnHeadStyle.setFillForegroundColor(HSSFColor.WHITE.index); HSSFFont font = workbook.createFont();
font.setFontName("宋体");
font.setFontHeightInPoints((short) );
// 普通单元格样式
HSSFCellStyle style = workbook.createCellStyle();
style.setFont(font);
style.setAlignment(HSSFCellStyle.ALIGN_LEFT);// 左右居中
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_TOP);// 上下居中
style.setWrapText(true);
style.setLeftBorderColor(HSSFColor.BLACK.index);
style.setBorderLeft((short) );
style.setRightBorderColor(HSSFColor.BLACK.index);
style.setBorderRight((short) );
style.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单元格的边框为粗体
style.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色.
style.setFillForegroundColor(HSSFColor.WHITE.index);// 设置单元格的背景颜色.
// 另一个样式
HSSFCellStyle centerstyle = workbook.createCellStyle();
centerstyle.setFont(font);
centerstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中
centerstyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 上下居中
centerstyle.setWrapText(true);
centerstyle.setLeftBorderColor(HSSFColor.BLACK.index);
centerstyle.setBorderLeft((short) );
centerstyle.setRightBorderColor(HSSFColor.BLACK.index);
centerstyle.setBorderRight((short) );
centerstyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单元格的边框为粗体
centerstyle.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色.
centerstyle.setFillForegroundColor(HSSFColor.WHITE.index);// 设置单元格的背景颜色. try {
// 创建第一行
HSSFRow row0 = sheet.createRow();
// 设置行高
row0.setHeight((short) );
// 创建第一列
HSSFCell cell0 = row0.createCell();
cell0.setCellValue(new HSSFRichTextString("中非发展基金投资项目调度会工作落实情况对照表"));
cell0.setCellStyle(headstyle);
/**
* 合并单元格
* 第一个参数:第一个单元格的行数(从0开始)
* 第二个参数:第二个单元格的行数(从0开始)
* 第三个参数:第一个单元格的列数(从0开始)
* 第四个参数:第二个单元格的列数(从0开始)
*/
CellRangeAddress range = new CellRangeAddress(, , , );
sheet.addMergedRegion(range);
// 创建第二行
HSSFRow row1 = sheet.createRow();
HSSFCell cell1 = row1.createCell();
cell1.setCellValue(new HSSFRichTextString("本次会议时间:2009年8月31日 前次会议时间:2009年8月24日"));
cell1.setCellStyle(centerstyle);
// 合并单元格
range = new CellRangeAddress(, , , );
sheet.addMergedRegion(range);
// 第三行
HSSFRow row2 = sheet.createRow();
row2.setHeight((short) );
HSSFCell cell = row2.createCell();
cell.setCellValue(new HSSFRichTextString("责任者"));
cell.setCellStyle(columnHeadStyle);
cell = row2.createCell();
cell.setCellValue(new HSSFRichTextString("成熟度排序"));
cell.setCellStyle(columnHeadStyle);
cell = row2.createCell();
cell.setCellValue(new HSSFRichTextString("事项"));
cell.setCellStyle(columnHeadStyle);
cell = row2.createCell();
cell.setCellValue(new HSSFRichTextString("前次会议要求/n/新项目的项目概要"));
cell.setCellStyle(columnHeadStyle);
cell = row2.createCell();
cell.setCellValue(new HSSFRichTextString("上周工作进展"));
cell.setCellStyle(columnHeadStyle);
cell = row2.createCell();
cell.setCellValue(new HSSFRichTextString("本周工作计划"));
cell.setCellStyle(columnHeadStyle);
cell = row2.createCell();
cell.setCellValue(new HSSFRichTextString("问题和建议"));
cell.setCellStyle(columnHeadStyle);
cell = row2.createCell();
cell.setCellValue(new HSSFRichTextString("备 注"));
cell.setCellStyle(columnHeadStyle);
// 访问数据库,得到数据集
List deitelVOList = getEntityManager().queryDeitelVOList();
int m = ;
int k = ;
for (int i = ; i < deitelVOList.size(); i++) {
DeitelVO vo = deitelVOList.get(i);
String dname = vo.getDname();
List workList = vo.getWorkInfoList();
HSSFRow row = sheet.createRow(m);
cell = row.createCell();
cell.setCellValue(new HSSFRichTextString(dname));
cell.setCellStyle(centerstyle);
// 合并单元格
range = new CellRangeAddress(m, m + workList.size() - , , );
sheet.addMergedRegion(range);
m = m + workList.size(); for (int j = ; j < workList.size(); j++) {
Workinfo w = workList.get(j);
// 遍历数据集创建Excel的行
row = sheet.getRow(k + j);
if (null == row) {
row = sheet.createRow(k + j);
}
cell = row.createCell();
cell.setCellValue(w.getWnumber());
cell.setCellStyle(centerstyle);
cell = row.createCell();
cell.setCellValue(new HSSFRichTextString(w.getWitem()));
cell.setCellStyle(style);
cell = row.createCell();
cell.setCellValue(new HSSFRichTextString(w.getWmeting()));
cell.setCellStyle(style);
cell = row.createCell();
cell.setCellValue(new HSSFRichTextString(w.getWbweek()));
cell.setCellStyle(style);
cell = row.createCell();
cell.setCellValue(new HSSFRichTextString(w.getWtweek()));
cell.setCellStyle(style);
cell = row.createCell();
cell.setCellValue(new HSSFRichTextString(w.getWproblem()));
cell.setCellStyle(style);
cell = row.createCell();
cell.setCellValue(new HSSFRichTextString(w.getWremark()));
cell.setCellStyle(style);
}
k = k + workList.size();
}
// 列尾
int footRownumber = sheet.getLastRowNum();
HSSFRow footRow = sheet.createRow(footRownumber + );
HSSFCell footRowcell = footRow.createCell();
footRowcell.setCellValue(new HSSFRichTextString(" 审 定:XXX 审 核:XXX 汇 总:XX"));
footRowcell.setCellStyle(centerstyle);
range = new CellRangeAddress(footRownumber + , footRownumber + , , );
sheet.addMergedRegion(range); HttpServletResponse response = getResponse();
HttpServletRequest request = getRequest();
String filename = "未命名.xls";//设置下载时客户端Excel的名称
// 请见:http://zmx.javaeye.com/blog/622529
filename = Util.encodeFilename(filename, request);
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment;filename=" + filename);
OutputStream ouputStream = response.getOutputStream();
workbook.write(ouputStream);
ouputStream.flush();
ouputStream.close(); } catch (Exception e) {
e.printStackTrace();
}
return null;
}
-------------------------------->>其他应用参考指南:
你可以使用开源的jexcel 的jar包里面有 Java == excel 的相互读写。
导入到Java后再写入数据库就方便了
附上使用方法: 下面这些是在开发中用到的一些东西,有的代码贴的不是完整的,只是贴出了关于操作EXCEL的代码: 使用如下: 搭建环境 将下载后的文件解包,得到jxl.jar,放入classpath,安装就完成了。 基本操作 一、创建文件 拟生成一个名为“test.xls”的Excel文件,其中第一个工作表被命名为
“第一页”,大致效果如下:
Java代码
. package test;
.
. // 生成Excel的类
. import java.io.File;
.
. import jxl.Workbook;
. import jxl.write.Label;
. import jxl.write.WritableSheet;
. import jxl.write.WritableWorkbook;
.
. public class CreateExcel {
. public static void main(String args[]) {
. try {
. // 打开文件
. WritableWorkbook book = Workbook.createWorkbook( new File( " test.xls " ));
. // 生成名为“第一页”的工作表,参数0表示这是第一页
. WritableSheet sheet = book.createSheet( " 第一页 " , );
. // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
. // 以及单元格内容为test
. Label label = new Label( , , " test " );
.
. // 将定义好的单元格添加到工作表中
. sheet.addCell(label);
.
. /**/ /*
26. * 生成一个保存数字的单元格 必须使用Number的完整包路径,否则有语法歧义 单元格位置是第二列,第一行,值为789.123
27. */
. jxl.write.Number number = new jxl.write.Number( , , 555.12541 );
. sheet.addCell(number);
.
. // 写入数据并关闭文件
. book.write();
. book.close();
.
. } catch (Exception e) {
. System.out.println(e);
. }
. }
. 编译执行后,会产生一个Excel文件。 三、读取文件 以刚才我们创建的Excel文件为例,做一个简单的读取操作,程序代码如下:
Java代码
. package test;
.
. // 读取Excel的类
. import java.io.File;
.
. import jxl.Cell;
. import jxl.Sheet;
. import jxl.Workbook;
.
. public class ReadExcel {
. public static void main(String args[]) {
. try {
. Workbook book = Workbook.getWorkbook( new File( " test.xls " ));
. // 获得第一个工作表对象
. Sheet sheet = book.getSheet( );
. // 得到第一列第一行的单元格
. Cell cell1 = sheet.getCell( , );
. String result = cell1.getContents();
. System.out.println(result);
. book.close();
. } catch (Exception e) {
. System.out.println(e);
. }
. }
. 程序执行结果:test 四、修改文件
利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,
其他操作和创建Excel是一样的。下面的例子是在我们已经生成的Excel文件中添加一个工作表:
Java代码
. package test;
.
. import java.io.File;
.
. import jxl.Workbook;
. import jxl.write.Label;
. import jxl.write.WritableSheet;
. import jxl.write.WritableWorkbook;
.
. public class UpdateExcel {
. public static void main(String args[]) {
. try {
. // Excel获得文件
. Workbook wb = Workbook.getWorkbook( new File( " test.xls " ));
. // 打开一个文件的副本,并且指定数据写回到原文件
. WritableWorkbook book = Workbook.createWorkbook( new File( " test.xls " ),
. wb);
. // 添加一个工作表
. WritableSheet sheet = book.createSheet( " 第二页 " , );
. sheet.addCell( new Label( , , " 第二页的测试数据 " ));
. book.write();
. book.close();
. } catch (Exception e) {
. System.out.println(e);
. }
. }
. 其他操作 一、 数据格式化 在Excel中不涉及复杂的数据类型,能够比较好的处理字串、数字和日期已经能够满足一般的应用。 、 字串格式化 字符串的格式化涉及到的是字体、粗细、字号等元素,这些功能主要由WritableFont和
WritableCellFormat类来负责。假设我们在生成一个含有字串的单元格时,使用如下语句,
为方便叙述,我们为每一行命令加了编号:
Java代码
. WritableFont font1 =
. new WritableFont(WritableFont.TIMES, ,WritableFont.BOLD); ①
.
. WritableCellFormat format1 = new WritableCellFormat(font1); ②
.
. Label label = new Label( , ,”data test”,format1) ③
.
.
. 其中①指定了字串格式:字体为TIMES,字号16,加粗显示。WritableFont有非常丰富的
. 构造子,供不同情况下使用,jExcelAPI的java-doc中有详细列表,这里不再列出。
.
. ②处代码使用了WritableCellFormat类,这个类非常重要,通过它可以指定单元格的各种
. 属性,后面的单元格格式化中会有更多描述。
.
. ③处使用了Label类的构造子,指定了字串被赋予那种格式。
.
. 在WritableCellFormat类中,还有一个很重要的方法是指定数据的对齐方式,比如针对我们
. 上面的实例,可以指定:
.
. // 把水平对齐方式指定为居中
. format1.setAlignment(jxl.format.Alignment.CENTRE);
.
. // 把垂直对齐方式指定为居中
. format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); 二、单元格操作 Excel中很重要的一部分是对单元格的操作,比如行高、列宽、单元格合并等,所幸jExcelAPI
提供了这些支持。这些操作相对比较简单,下面只介绍一下相关的API。 、 合并单元格
Java代码
. WritableSheet.mergeCells( int m, int n, int p, int q);
.
. // 作用是从(m,n)到(p,q)的单元格全部合并,比如:
. WritableSheet sheet = book.createSheet(“第一页”, );
.
. // 合并第一列第一行到第六列第一行的所有单元格
. sheet.mergeCells( , , , ); 合并既可以是横向的,也可以是纵向的。合并后的单元格不能再次进行合并,否则会触发异常。 、用于Excel视图的视图子类化
为了在生成输出文档的过程中实现定制的行为,我们将继承合适的抽象类。对于Excel,这包括提供一个 org.springframework.web.servlet.view.document.AbstractExcelView的子类,并实现 buildExcelDocument方法。
Java代码
. public class ViewExcel extends AbstractExcelView {
.
. public void buildExcelDocument(
. Map model, HSSFWorkbook workbook,
. HttpServletRequest request, HttpServletResponse response)
. throws Exception {
.
. HSSFSheet sheet = workbook.createSheet("list");
. sheet.setDefaultColumnWidth((short) );
.
.
. HSSFCell cell = getCell(sheet, , );
. setText(cell, "Spring Excel test");
.
. HSSFCellStyle dateStyle = workbook.createCellStyle();
. dateStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));
. cell = getCell(sheet, , );
. cell.setCellValue(new Date());
. cell.setCellStyle(dateStyle);
. getCell(sheet, , ).setCellValue();
.
. HSSFRow sheetRow = sheet.createRow();
. for (short i = ; i < ; i++) {
. sheetRow.createCell(i).setCellValue(i * );
. }
.
. }
.
. }
  1. public ActionResult excelPrint() {
  2. HSSFWorkbook workbook = new HSSFWorkbook();// 创建一个Excel文件
  3. HSSFSheet sheet = workbook.createSheet();// 创建一个Excel的Sheet
  4. sheet.createFreezePane(1, 3);// 冻结
  5. // 设置列宽
  6. sheet.setColumnWidth(0, 1000);
  7. sheet.setColumnWidth(1, 3500);
  8. sheet.setColumnWidth(2, 3500);
  9. sheet.setColumnWidth(3, 6500);
  10. sheet.setColumnWidth(4, 6500);
  11. sheet.setColumnWidth(5, 6500);
  12. sheet.setColumnWidth(6, 6500);
  13. sheet.setColumnWidth(7, 2500);
  14. // Sheet样式
  15. HSSFCellStyle sheetStyle = workbook.createCellStyle();
  16. // 背景色的设定
  17. sheetStyle.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index);
  18. // 前景色的设定
  19. sheetStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
  20. // 填充模式
  21. sheetStyle.setFillPattern(HSSFCellStyle.FINE_DOTS);
  22. // 设置列的样式
  23. for (int i = 0; i <= 14; i++) {
  24. sheet.setDefaultColumnStyle((short) i, sheetStyle);
  25. }
  26. // 设置字体
  27. HSSFFont headfont = workbook.createFont();
  28. headfont.setFontName("黑体");
  29. headfont.setFontHeightInPoints((short) 22);// 字体大小
  30. headfont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 加粗
  31. // 另一个样式
  32. HSSFCellStyle headstyle = workbook.createCellStyle();
  33. headstyle.setFont(headfont);
  34. headstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中
  35. headstyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 上下居中
  36. headstyle.setLocked(true);
  37. headstyle.setWrapText(true);// 自动换行
  38. // 另一个字体样式
  39. HSSFFont columnHeadFont = workbook.createFont();
  40. columnHeadFont.setFontName("宋体");
  41. columnHeadFont.setFontHeightInPoints((short) 10);
  42. columnHeadFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
  43. // 列头的样式
  44. HSSFCellStyle columnHeadStyle = workbook.createCellStyle();
  45. columnHeadStyle.setFont(columnHeadFont);
  46. columnHeadStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中
  47. columnHeadStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 上下居中
  48. columnHeadStyle.setLocked(true);
  49. columnHeadStyle.setWrapText(true);
  50. columnHeadStyle.setLeftBorderColor(HSSFColor.BLACK.index);// 左边框的颜色
  51. columnHeadStyle.setBorderLeft((short) 1);// 边框的大小
  52. columnHeadStyle.setRightBorderColor(HSSFColor.BLACK.index);// 右边框的颜色
  53. columnHeadStyle.setBorderRight((short) 1);// 边框的大小
  54. columnHeadStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单元格的边框为粗体
  55. columnHeadStyle.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色
  56. // 设置单元格的背景颜色(单元格的样式会覆盖列或行的样式)
  57. columnHeadStyle.setFillForegroundColor(HSSFColor.WHITE.index);
  58. HSSFFont font = workbook.createFont();
  59. font.setFontName("宋体");
  60. font.setFontHeightInPoints((short) 10);
  61. // 普通单元格样式
  62. HSSFCellStyle style = workbook.createCellStyle();
  63. style.setFont(font);
  64. style.setAlignment(HSSFCellStyle.ALIGN_LEFT);// 左右居中
  65. style.setVerticalAlignment(HSSFCellStyle.VERTICAL_TOP);// 上下居中
  66. style.setWrapText(true);
  67. style.setLeftBorderColor(HSSFColor.BLACK.index);
  68. style.setBorderLeft((short) 1);
  69. style.setRightBorderColor(HSSFColor.BLACK.index);
  70. style.setBorderRight((short) 1);
  71. style.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单元格的边框为粗体
  72. style.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色.
  73. style.setFillForegroundColor(HSSFColor.WHITE.index);// 设置单元格的背景颜色.
  74. // 另一个样式
  75. HSSFCellStyle centerstyle = workbook.createCellStyle();
  76. centerstyle.setFont(font);
  77. centerstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中
  78. centerstyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 上下居中
  79. centerstyle.setWrapText(true);
  80. centerstyle.setLeftBorderColor(HSSFColor.BLACK.index);
  81. centerstyle.setBorderLeft((short) 1);
  82. centerstyle.setRightBorderColor(HSSFColor.BLACK.index);
  83. centerstyle.setBorderRight((short) 1);
  84. centerstyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单元格的边框为粗体
  85. centerstyle.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色.
  86. centerstyle.setFillForegroundColor(HSSFColor.WHITE.index);// 设置单元格的背景颜色.
  87. try {
  88. // 创建第一行
  89. HSSFRow row0 = sheet.createRow(0);
  90. // 设置行高
  91. row0.setHeight((short) 900);
  92. // 创建第一列
  93. HSSFCell cell0 = row0.createCell(0);
  94. cell0.setCellValue(new HSSFRichTextString("中非发展基金投资项目调度会工作落实情况对照表"));
  95. cell0.setCellStyle(headstyle);
  96. /**
  97. * 合并单元格
  98. *    第一个参数:第一个单元格的行数(从0开始)
  99. *    第二个参数:第二个单元格的行数(从0开始)
  100. *    第三个参数:第一个单元格的列数(从0开始)
  101. *    第四个参数:第二个单元格的列数(从0开始)
  102. */
  103. CellRangeAddress range = new CellRangeAddress(0, 0, 0, 7);
  104. sheet.addMergedRegion(range);
  105. // 创建第二行
  106. HSSFRow row1 = sheet.createRow(1);
  107. HSSFCell cell1 = row1.createCell(0);
  108. cell1.setCellValue(new HSSFRichTextString("本次会议时间:2009年8月31日       前次会议时间:2009年8月24日"));
  109. cell1.setCellStyle(centerstyle);
  110. // 合并单元格
  111. range = new CellRangeAddress(1, 2, 0, 7);
  112. sheet.addMergedRegion(range);
  113. // 第三行
  114. HSSFRow row2 = sheet.createRow(3);
  115. row2.setHeight((short) 750);
  116. HSSFCell cell = row2.createCell(0);
  117. cell.setCellValue(new HSSFRichTextString("责任者"));
  118. cell.setCellStyle(columnHeadStyle);
  119. cell = row2.createCell(1);
  120. cell.setCellValue(new HSSFRichTextString("成熟度排序"));
  121. cell.setCellStyle(columnHeadStyle);
  122. cell = row2.createCell(2);
  123. cell.setCellValue(new HSSFRichTextString("事项"));
  124. cell.setCellStyle(columnHeadStyle);
  125. cell = row2.createCell(3);
  126. cell.setCellValue(new HSSFRichTextString("前次会议要求/n/新项目的项目概要"));
  127. cell.setCellStyle(columnHeadStyle);
  128. cell = row2.createCell(4);
  129. cell.setCellValue(new HSSFRichTextString("上周工作进展"));
  130. cell.setCellStyle(columnHeadStyle);
  131. cell = row2.createCell(5);
  132. cell.setCellValue(new HSSFRichTextString("本周工作计划"));
  133. cell.setCellStyle(columnHeadStyle);
  134. cell = row2.createCell(6);
  135. cell.setCellValue(new HSSFRichTextString("问题和建议"));
  136. cell.setCellStyle(columnHeadStyle);
  137. cell = row2.createCell(7);
  138. cell.setCellValue(new HSSFRichTextString("备 注"));
  139. cell.setCellStyle(columnHeadStyle);
  140. // 访问数据库,得到数据集
  141. List deitelVOList = getEntityManager().queryDeitelVOList();
  142. int m = 4;
  143. int k = 4;
  144. for (int i = 0; i < deitelVOList.size(); i++) {
  145. DeitelVO vo = deitelVOList.get(i);
  146. String dname = vo.getDname();
  147. List workList = vo.getWorkInfoList();
  148. HSSFRow row = sheet.createRow(m);
  149. cell = row.createCell(0);
  150. cell.setCellValue(new HSSFRichTextString(dname));
  151. cell.setCellStyle(centerstyle);
  152. // 合并单元格
  153. range = new CellRangeAddress(m, m + workList.size() - 1, 0, 0);
  154. sheet.addMergedRegion(range);
  155. m = m + workList.size();
  156. for (int j = 0; j < workList.size(); j++) {
  157. Workinfo w = workList.get(j);
  158. // 遍历数据集创建Excel的行
  159. row = sheet.getRow(k + j);
  160. if (null == row) {
  161. row = sheet.createRow(k + j);
  162. }
  163. cell = row.createCell(1);
  164. cell.setCellValue(w.getWnumber());
  165. cell.setCellStyle(centerstyle);
  166. cell = row.createCell(2);
  167. cell.setCellValue(new HSSFRichTextString(w.getWitem()));
  168. cell.setCellStyle(style);
  169. cell = row.createCell(3);
  170. cell.setCellValue(new HSSFRichTextString(w.getWmeting()));
  171. cell.setCellStyle(style);
  172. cell = row.createCell(4);
  173. cell.setCellValue(new HSSFRichTextString(w.getWbweek()));
  174. cell.setCellStyle(style);
  175. cell = row.createCell(5);
  176. cell.setCellValue(new HSSFRichTextString(w.getWtweek()));
  177. cell.setCellStyle(style);
  178. cell = row.createCell(6);
  179. cell.setCellValue(new HSSFRichTextString(w.getWproblem()));
  180. cell.setCellStyle(style);
  181. cell = row.createCell(7);
  182. cell.setCellValue(new HSSFRichTextString(w.getWremark()));
  183. cell.setCellStyle(style);
  184. }
  185. k = k + workList.size();
  186. }
  187. // 列尾
  188. int footRownumber = sheet.getLastRowNum();
  189. HSSFRow footRow = sheet.createRow(footRownumber + 1);
  190. HSSFCell footRowcell = footRow.createCell(0);
  191. footRowcell.setCellValue(new HSSFRichTextString("                    审  定:XXX      审  核:XXX     汇  总:XX"));
  192. footRowcell.setCellStyle(centerstyle);
  193. range = new CellRangeAddress(footRownumber + 1, footRownumber + 1, 0, 7);
  194. sheet.addMergedRegion(range);
  195. HttpServletResponse response = getResponse();
  196. HttpServletRequest request = getRequest();
  197. String filename = "未命名.xls";//设置下载时客户端Excel的名称
  198. // 请见:http://zmx.javaeye.com/blog/622529
  199. filename = Util.encodeFilename(filename, request);
  200. response.setContentType("application/vnd.ms-excel");
  201. response.setHeader("Content-disposition", "attachment;filename=" + filename);
  202. OutputStream ouputStream = response.getOutputStream();
  203. workbook.write(ouputStream);
  204. ouputStream.flush();
  205. ouputStream.close();
  206. } catch (Exception e) {
  207. e.printStackTrace();
  208. }
  209. return null;
  210. }
  211. -------------------------------->>其他应用参考指南:
  212. 你可以使用开源的jexcel 的jar包里面有 Java == excel 的相互读写。
    导入到Java后再写入数据库就方便了
    附上使用方法:

    下面这些是在开发中用到的一些东西,有的代码贴的不是完整的,只是贴出了关于操作EXCEL的代码:

    使用如下:

    搭建环境

    将下载后的文件解包,得到jxl.jar,放入classpath,安装就完成了。

    基本操作

    一、创建文件

    拟生成一个名为“test.xls”的Excel文件,其中第一个工作表被命名为
    “第一页”,大致效果如下:
    Java代码
    1. package test;
    2.
    3. // 生成Excel的类
    4. import java.io.File;
    5.
    6. import jxl.Workbook;
    7. import jxl.write.Label;
    8. import jxl.write.WritableSheet;
    9. import jxl.write.WritableWorkbook;
    10.
    11. public class CreateExcel {
    12. public static void main(String args[]) {
    13. try {
    14. // 打开文件
    15. WritableWorkbook book = Workbook.createWorkbook( new File( " test.xls " ));
    16. // 生成名为“第一页”的工作表,参数0表示这是第一页
    17. WritableSheet sheet = book.createSheet( " 第一页 " , 0 );
    18. // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
    19. // 以及单元格内容为test
    20. Label label = new Label( 0 , 0 , " test " );
    21.
    22. // 将定义好的单元格添加到工作表中
    23. sheet.addCell(label);
    24.
    25. /**/ /*
    26. * 生成一个保存数字的单元格 必须使用Number的完整包路径,否则有语法歧义 单元格位置是第二列,第一行,值为789.123
    27. */
    28. jxl.write.Number number = new jxl.write.Number( 1 , 0 , 555.12541 );
    29. sheet.addCell(number);
    30.
    31. // 写入数据并关闭文件
    32. book.write();
    33. book.close();
    34.
    35. } catch (Exception e) {
    36. System.out.println(e);
    37. }
    38. }
    39.

    编译执行后,会产生一个Excel文件。

    三、读取文件

    以刚才我们创建的Excel文件为例,做一个简单的读取操作,程序代码如下:
    Java代码
    1. package test;
    2.
    3. // 读取Excel的类
    4. import java.io.File;
    5.
    6. import jxl.Cell;
    7. import jxl.Sheet;
    8. import jxl.Workbook;
    9.
    10. public class ReadExcel {
    11. public static void main(String args[]) {
    12. try {
    13. Workbook book = Workbook.getWorkbook( new File( " test.xls " ));
    14. // 获得第一个工作表对象
    15. Sheet sheet = book.getSheet( 0 );
    16. // 得到第一列第一行的单元格
    17. Cell cell1 = sheet.getCell( 0 , 0 );
    18. String result = cell1.getContents();
    19. System.out.println(result);
    20. book.close();
    21. } catch (Exception e) {
    22. System.out.println(e);
    23. }
    24. }
    25.

    程序执行结果:test

    四、修改文件
    利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,
    其他操作和创建Excel是一样的。下面的例子是在我们已经生成的Excel文件中添加一个工作表:
    Java代码
    1. package test;
    2.
    3. import java.io.File;
    4.
    5. import jxl.Workbook;
    6. import jxl.write.Label;
    7. import jxl.write.WritableSheet;
    8. import jxl.write.WritableWorkbook;
    9.
    10. public class UpdateExcel {
    11. public static void main(String args[]) {
    12. try {
    13. // Excel获得文件
    14. Workbook wb = Workbook.getWorkbook( new File( " test.xls " ));
    15. // 打开一个文件的副本,并且指定数据写回到原文件
    16. WritableWorkbook book = Workbook.createWorkbook( new File( " test.xls " ),
    17. wb);
    18. // 添加一个工作表
    19. WritableSheet sheet = book.createSheet( " 第二页 " , 1 );
    20. sheet.addCell( new Label( 0 , 0 , " 第二页的测试数据 " ));
    21. book.write();
    22. book.close();
    23. } catch (Exception e) {
    24. System.out.println(e);
    25. }
    26. }
    27.

    其他操作

    一、 数据格式化

    在Excel中不涉及复杂的数据类型,能够比较好的处理字串、数字和日期已经能够满足一般的应用。

    1、 字串格式化

    字符串的格式化涉及到的是字体、粗细、字号等元素,这些功能主要由WritableFont和
    WritableCellFormat类来负责。假设我们在生成一个含有字串的单元格时,使用如下语句,
    为方便叙述,我们为每一行命令加了编号:
    Java代码
    1. WritableFont font1 =
    2. new WritableFont(WritableFont.TIMES, 16 ,WritableFont.BOLD); ①
    3.
    4. WritableCellFormat format1 = new WritableCellFormat(font1); ②
    5.
    6. Label label = new Label( 0 , 0 ,”data 4 test”,format1) ③
    7.
    8.
    9. 其中①指定了字串格式:字体为TIMES,字号16,加粗显示。WritableFont有非常丰富的
    10. 构造子,供不同情况下使用,jExcelAPI的java-doc中有详细列表,这里不再列出。
    11.
    12. ②处代码使用了WritableCellFormat类,这个类非常重要,通过它可以指定单元格的各种
    13. 属性,后面的单元格格式化中会有更多描述。
    14.
    15. ③处使用了Label类的构造子,指定了字串被赋予那种格式。
    16.
    17. 在WritableCellFormat类中,还有一个很重要的方法是指定数据的对齐方式,比如针对我们
    18. 上面的实例,可以指定:
    19.
    20. // 把水平对齐方式指定为居中
    21. format1.setAlignment(jxl.format.Alignment.CENTRE);
    22.
    23. // 把垂直对齐方式指定为居中
    24. format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);

    二、单元格操作

    Excel中很重要的一部分是对单元格的操作,比如行高、列宽、单元格合并等,所幸jExcelAPI
    提供了这些支持。这些操作相对比较简单,下面只介绍一下相关的API。

    1、 合并单元格
    Java代码
    1. WritableSheet.mergeCells( int m, int n, int p, int q);
    2.
    3. // 作用是从(m,n)到(p,q)的单元格全部合并,比如:
    4. WritableSheet sheet = book.createSheet(“第一页”, 0 );
    5.
    6. // 合并第一列第一行到第六列第一行的所有单元格
    7. sheet.mergeCells( 0 , 0 , 5 , 0 );

    合并既可以是横向的,也可以是纵向的。合并后的单元格不能再次进行合并,否则会触发异常。

    3、用于Excel视图的视图子类化
    为了在生成输出文档的过程中实现定制的行为,我们将继承合适的抽象类。对于Excel,这包括提供一个 org.springframework.web.servlet.view.document.AbstractExcelView的子类,并实现 buildExcelDocument方法。
    Java代码
    1. public class ViewExcel extends AbstractExcelView {
    2.
    3. public void buildExcelDocument(
    4. Map model, HSSFWorkbook workbook,
    5. HttpServletRequest request, HttpServletResponse response)
    6. throws Exception {
    7.
    8. HSSFSheet sheet = workbook.createSheet("list");
    9. sheet.setDefaultColumnWidth((short) 12);
    10.
    11.
    12. HSSFCell cell = getCell(sheet, 0, 0);
    13. setText(cell, "Spring Excel test");
    14.
    15. HSSFCellStyle dateStyle = workbook.createCellStyle();
    16. dateStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));
    17. cell = getCell(sheet, 1, 0);
    18. cell.setCellValue(new Date());
    19. cell.setCellStyle(dateStyle);
    20. getCell(sheet, 2, 0).setCellValue(458);
    21.
    22. HSSFRow sheetRow = sheet.createRow(3);
    23. for (short i = 0; i < 10; i++) {
    24. sheetRow.createCell(i).setCellValue(i * 10);
    25. }
    26.
    27. }
    28.
    29. }

HSSFWorkBooK用法的更多相关文章

  1. HSSFWorkBooK用法 —Excel表的导出和设置

    HSSFWorkBooK用法 —Excel表的导出和设置 2013年02月21日 ⁄ 综合 ⁄ 共 9248字 ⁄ 字号 小 中 大 ⁄ 评论关闭 public ActionResult excelP ...

  2. HSSFWorkBooK用法 ---Excel表的导出和设置

    public ActionResult excelPrint() { HSSFWorkbook workbook = new HSSFWorkbook();// 创建一个Excel文件 HSSFShe ...

  3. 转载 NPOI.dll 用法。单元格,样式,字体,颜色,行高,宽度。读写excel

    我用的版本是1.25的.每个版本用法有一点不同 using System; using System.Collections.Generic; using System.ComponentModel; ...

  4. poi操作excel的基本用法

    这周公司要用excel作为数据存储格式做一个文具申请的功能,感觉以前本来很简单的功能变复杂了不少,但是还是记录一下一些excel的基本用法. 写在最前面:这里只介绍一些excel的基本存储方式(读,写 ...

  5. NPOI.dll 用法。单元格,样式,字体,颜色,行高,宽度。读写excel

    NPOI.dll 用法.单元格,样式,字体,颜色,行高,宽度.读写excel 转载:http://yuncode.net/code/c_531e679b3896495 view source prin ...

  6. EditText 基本用法

    title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...

  7. jquery插件的用法之cookie 插件

    一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...

  8. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  9. [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法

    一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...

随机推荐

  1. Python中用format函数格式化字符串

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存. 1.百分号方式 语法:%[( ...

  2. iOS 读取大文件时候的注意点

    转: 使用NSData读取数据,采用NSData的dataWithContentsOfFile:方法.不少人反馈说如果直接使用,将会耗尽iOS的内存. 其实这个是可以改善的. NSData还有一个AP ...

  3. FastDFS 通过文件名获取文件信息

    /** * 获取文件信息 * * param string group_name 文件所在的组名 * param string file_id 文件id(如: M00/09/BE/rBBZolgj6O ...

  4. MapControl控件AddLayer出现错误-引发类型为“System.Windows.Forms.AxHost+InvalidActiveXStateException”的异常

    出错代码: AxMapControl pMptrl = new AxMapControl(); //add data string mdbPath = string.Format("{0}\ ...

  5. Greenplum记录(一):主体结构、master、segments节点、interconnect、performance monitor

    结构:Client--master host--interconnect--segment host 每个节点都是单独的PG数据库,要获得最佳的性能需要对每个节点进行独立优化. master上不包含任 ...

  6. excellent cushioning and also vitality go back with this boot

    The particular manufactured fine mesh higher almost addresses the complete boot. Here is the sort of ...

  7. mybatis:choose when otherwise标签

    choose标签是按顺序判断其内部when标签中的test条件是否成立,如果有一个成立,则 choose 结束. 当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的 ...

  8. Parse Fatal Error at line 4 column 43: 已经为元素 "web-app" 指定属性 "xmlns"。

    打开web.xml;最上面的web-app里面,看有没有重复的,重点关注xmlns="http://java.sun.com/xml/ns/javaee" ,如果重复,删去就好~~ ...

  9. Find Out What Your Entity Framework Query Is Really Doing

    Assuming that you're using Entity Framework 6, you already have a logging tool that can give you som ...

  10. Intellij Idea/Webstorm/Phpstorm 版本控制忽略文件

    本地差异化配置,不需要提交,这时候需要在整个版本控制中忽略掉文件的提交. File -> Settings -> Version Control -> Ignored Files