HSSFWorkBooK用法
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 * );
. }
.
. }
.
. }
- public ActionResult excelPrint() {
- HSSFWorkbook workbook = new HSSFWorkbook();// 创建一个Excel文件
- HSSFSheet sheet = workbook.createSheet();// 创建一个Excel的Sheet
- sheet.createFreezePane(1, 3);// 冻结
- // 设置列宽
- sheet.setColumnWidth(0, 1000);
- sheet.setColumnWidth(1, 3500);
- sheet.setColumnWidth(2, 3500);
- sheet.setColumnWidth(3, 6500);
- sheet.setColumnWidth(4, 6500);
- sheet.setColumnWidth(5, 6500);
- sheet.setColumnWidth(6, 6500);
- sheet.setColumnWidth(7, 2500);
- // 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 = 0; i <= 14; i++) {
- sheet.setDefaultColumnStyle((short) i, sheetStyle);
- }
- // 设置字体
- HSSFFont headfont = workbook.createFont();
- headfont.setFontName("黑体");
- headfont.setFontHeightInPoints((short) 22);// 字体大小
- 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) 10);
- 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) 1);// 边框的大小
- columnHeadStyle.setRightBorderColor(HSSFColor.BLACK.index);// 右边框的颜色
- columnHeadStyle.setBorderRight((short) 1);// 边框的大小
- columnHeadStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单元格的边框为粗体
- columnHeadStyle.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色
- // 设置单元格的背景颜色(单元格的样式会覆盖列或行的样式)
- columnHeadStyle.setFillForegroundColor(HSSFColor.WHITE.index);
- HSSFFont font = workbook.createFont();
- font.setFontName("宋体");
- font.setFontHeightInPoints((short) 10);
- // 普通单元格样式
- 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) 1);
- style.setRightBorderColor(HSSFColor.BLACK.index);
- style.setBorderRight((short) 1);
- 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) 1);
- centerstyle.setRightBorderColor(HSSFColor.BLACK.index);
- centerstyle.setBorderRight((short) 1);
- centerstyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单元格的边框为粗体
- centerstyle.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色.
- centerstyle.setFillForegroundColor(HSSFColor.WHITE.index);// 设置单元格的背景颜色.
- try {
- // 创建第一行
- HSSFRow row0 = sheet.createRow(0);
- // 设置行高
- row0.setHeight((short) 900);
- // 创建第一列
- HSSFCell cell0 = row0.createCell(0);
- cell0.setCellValue(new HSSFRichTextString("中非发展基金投资项目调度会工作落实情况对照表"));
- cell0.setCellStyle(headstyle);
- /**
- * 合并单元格
- * 第一个参数:第一个单元格的行数(从0开始)
- * 第二个参数:第二个单元格的行数(从0开始)
- * 第三个参数:第一个单元格的列数(从0开始)
- * 第四个参数:第二个单元格的列数(从0开始)
- */
- CellRangeAddress range = new CellRangeAddress(0, 0, 0, 7);
- sheet.addMergedRegion(range);
- // 创建第二行
- HSSFRow row1 = sheet.createRow(1);
- HSSFCell cell1 = row1.createCell(0);
- cell1.setCellValue(new HSSFRichTextString("本次会议时间:2009年8月31日 前次会议时间:2009年8月24日"));
- cell1.setCellStyle(centerstyle);
- // 合并单元格
- range = new CellRangeAddress(1, 2, 0, 7);
- sheet.addMergedRegion(range);
- // 第三行
- HSSFRow row2 = sheet.createRow(3);
- row2.setHeight((short) 750);
- HSSFCell cell = row2.createCell(0);
- cell.setCellValue(new HSSFRichTextString("责任者"));
- cell.setCellStyle(columnHeadStyle);
- cell = row2.createCell(1);
- cell.setCellValue(new HSSFRichTextString("成熟度排序"));
- cell.setCellStyle(columnHeadStyle);
- cell = row2.createCell(2);
- cell.setCellValue(new HSSFRichTextString("事项"));
- cell.setCellStyle(columnHeadStyle);
- cell = row2.createCell(3);
- cell.setCellValue(new HSSFRichTextString("前次会议要求/n/新项目的项目概要"));
- cell.setCellStyle(columnHeadStyle);
- cell = row2.createCell(4);
- cell.setCellValue(new HSSFRichTextString("上周工作进展"));
- cell.setCellStyle(columnHeadStyle);
- cell = row2.createCell(5);
- cell.setCellValue(new HSSFRichTextString("本周工作计划"));
- cell.setCellStyle(columnHeadStyle);
- cell = row2.createCell(6);
- cell.setCellValue(new HSSFRichTextString("问题和建议"));
- cell.setCellStyle(columnHeadStyle);
- cell = row2.createCell(7);
- cell.setCellValue(new HSSFRichTextString("备 注"));
- cell.setCellStyle(columnHeadStyle);
- // 访问数据库,得到数据集
- List deitelVOList = getEntityManager().queryDeitelVOList();
- int m = 4;
- int k = 4;
- for (int i = 0; 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(0);
- cell.setCellValue(new HSSFRichTextString(dname));
- cell.setCellStyle(centerstyle);
- // 合并单元格
- range = new CellRangeAddress(m, m + workList.size() - 1, 0, 0);
- sheet.addMergedRegion(range);
- m = m + workList.size();
- for (int j = 0; 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(1);
- cell.setCellValue(w.getWnumber());
- cell.setCellStyle(centerstyle);
- cell = row.createCell(2);
- cell.setCellValue(new HSSFRichTextString(w.getWitem()));
- cell.setCellStyle(style);
- cell = row.createCell(3);
- cell.setCellValue(new HSSFRichTextString(w.getWmeting()));
- cell.setCellStyle(style);
- cell = row.createCell(4);
- cell.setCellValue(new HSSFRichTextString(w.getWbweek()));
- cell.setCellStyle(style);
- cell = row.createCell(5);
- cell.setCellValue(new HSSFRichTextString(w.getWtweek()));
- cell.setCellStyle(style);
- cell = row.createCell(6);
- cell.setCellValue(new HSSFRichTextString(w.getWproblem()));
- cell.setCellStyle(style);
- cell = row.createCell(7);
- cell.setCellValue(new HSSFRichTextString(w.getWremark()));
- cell.setCellStyle(style);
- }
- k = k + workList.size();
- }
- // 列尾
- int footRownumber = sheet.getLastRowNum();
- HSSFRow footRow = sheet.createRow(footRownumber + 1);
- HSSFCell footRowcell = footRow.createCell(0);
- footRowcell.setCellValue(new HSSFRichTextString(" 审 定:XXX 审 核:XXX 汇 总:XX"));
- footRowcell.setCellStyle(centerstyle);
- range = new CellRangeAddress(footRownumber + 1, footRownumber + 1, 0, 7);
- 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代码
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用法的更多相关文章
- HSSFWorkBooK用法 —Excel表的导出和设置
HSSFWorkBooK用法 —Excel表的导出和设置 2013年02月21日 ⁄ 综合 ⁄ 共 9248字 ⁄ 字号 小 中 大 ⁄ 评论关闭 public ActionResult excelP ...
- HSSFWorkBooK用法 ---Excel表的导出和设置
public ActionResult excelPrint() { HSSFWorkbook workbook = new HSSFWorkbook();// 创建一个Excel文件 HSSFShe ...
- 转载 NPOI.dll 用法。单元格,样式,字体,颜色,行高,宽度。读写excel
我用的版本是1.25的.每个版本用法有一点不同 using System; using System.Collections.Generic; using System.ComponentModel; ...
- poi操作excel的基本用法
这周公司要用excel作为数据存储格式做一个文具申请的功能,感觉以前本来很简单的功能变复杂了不少,但是还是记录一下一些excel的基本用法. 写在最前面:这里只介绍一些excel的基本存储方式(读,写 ...
- NPOI.dll 用法。单元格,样式,字体,颜色,行高,宽度。读写excel
NPOI.dll 用法.单元格,样式,字体,颜色,行高,宽度.读写excel 转载:http://yuncode.net/code/c_531e679b3896495 view source prin ...
- EditText 基本用法
title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...
- jquery插件的用法之cookie 插件
一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...
- Java中的Socket的用法
Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...
- [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法
一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...
随机推荐
- Android组件化和插件化开发
http://www.cnblogs.com/android-blogs/p/5703355.html 什么是组件化和插件化? 组件化开发就是将一个app分成多个模块,每个模块都是一个组件(Modul ...
- 学习Struts2的第一个应用步骤
---恢复内容开始--- 一.在官网 http://struts.apache.org/下载struts-2.3.31-all 1. 打开struts-2.3.31-all,将struts-2.3. ...
- Nginx相关集合
http://www.cnblogs.com/kamil/p/5163182.html LNMP搭建(yum) Nginx基本使用 http://www.cnblogs.com/kamil/p/516 ...
- tensorflow中的基本概念
本文是在阅读官方文档后的一些个人理解. 官方文档地址:https://www.tensorflow.org/versions/r0.12/get_started/basic_usage.html#ba ...
- 自己封装的常用NPOI文件导出源码
示例: 1. 2.示例2 源码下载地址:https://github.com/aa1356889/NPOICode
- JavaScript对象篇之hasOwnProperty
判断一个属性是定义在对象本身而不是继承自原型链,我们需要使用从 Object.prototype 继承而来的 hasOwnProperty 方法.hasOwnProperty 方法是 Javascri ...
- Hadoop MapReduce执行过程详解(带hadoop例子)
https://my.oschina.net/itblog/blog/275294 摘要: 本文通过一个例子,详细介绍Hadoop 的 MapReduce过程. 分析MapReduce执行过程 Map ...
- HTML5学习总结-番外04 Cordova/PhoneGap
一 PhoneGap 1 PhoneGap简绍 http://www.cnblogs.com/JustRun1983/p/3819433.html 2 环境安装 http://cordova.apac ...
- 在Python中使用可变长参数列表
函数定义 在函数定义中使用*args和**kwargs传递可变长参数. *args用作传递非命名键值可变长参数列表(位置参数); **kwargs用作传递键值可变长参数列表 函数调用 在调用函数时,使 ...
- HTML5的浏览器支持方案
现代的浏览器基本都支持 HTML5,此外还有老浏览器. 不管是旧的还是最新的,HTML5对无法识别的元素会作为内联元素自动处理. 所以,在这里教大家怎么让浏览器去处理"未知"的HT ...