java实现excel的生成,利用poi jar包实现excel的生成
利用工具就是站在牛人的肩膀上。现在看看利用poi jar包达成的效果吧
内容给注释掉了,简单的实现了标题以及表格标题和内容的实现(包括不一样的格式)
直接上传代码吧
/**
* 生成excel 包括订单细节
* @param path excel路径(所在的目录)
* @param ids id的字符串,用逗号隔开。
*/
private static void createExcelTwo(String path,AList list){
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd-HHmmss");
String date="_"+sdf.format(new Date());
String fileTwoName="OrderDetails"+date+".xls";
String excelTwo=path+"\\"+fileTwoName;
try {
File fileOne = new File(excelTwo);// 创建第一个excel文件对象
FileOutputStream fOut = null;
// 创建一个新的HSSFWorkbook对象
HSSFWorkbook workbook = new HSSFWorkbook();
// 创建一个Excel的工作表,可以指定工作表的名字
HSSFSheet sheet = workbook.createSheet("订单明细");
workbook.setSheetName(0, "订单明细",(short)1);//解决sheet名中文乱码问题
// 创建字体,红色、粗体
HSSFFont font = workbook.createFont();
font.setColor(HSSFFont.COLOR_NORMAL);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
font.setFontHeight((short)5);;
font.setFontName("宋体");
font.setFontHeightInPoints((short) 20);
// 创建单元格的格式,如居中、左对齐等(标题样式)
HSSFCellStyle style = workbook.createCellStyle(); // 样式对象
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 水平
style.setFont(font);
//表头字体
HSSFFont fontContent = workbook.createFont();
fontContent.setColor(HSSFFont.COLOR_NORMAL);
fontContent.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
fontContent.setFontHeight((short)5);;
fontContent.setFontName("宋体");
fontContent.setFontHeightInPoints((short) 10);
//表格内容字体
HSSFFont fontSubstance = workbook.createFont();
fontSubstance.setColor(HSSFFont.COLOR_NORMAL);
fontSubstance.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
fontSubstance.setFontHeight((short)5);;
fontSubstance.setFontName("宋体");
fontSubstance.setFontHeightInPoints((short) 10);
//表格外部样式
HSSFCellStyle styleContent = workbook.createCellStyle(); // 样式对象
styleContent.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直
styleContent.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 水平
styleContent.setFont(fontContent);
//表格内容样式
HSSFCellStyle styleSubstance = workbook.createCellStyle(); // 样式对象
styleSubstance.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直
styleSubstance.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 水平
styleSubstance.setFont(fontSubstance);
HSSFRow row = sheet.createRow((short) 0);
//合并单元格,前提是单元格要有(前3行10列合并)
sheet.addMergedRegion(new Region(0, (short) 0, 2, (short) 9));
HSSFCell ce = row.createCell((short) 0);
ce.setEncoding(HSSFCell.ENCODING_UTF_16);// 中文处理
ce.setCellValue("订单明细"); // 表格的第一行第一列显示的数据
ce.setCellStyle(style); // 样式,居中
HSSFRow row2 = sheet.createRow((short) 3); //表格第4行
ImpApiReturn.createExcelCell(row2,0,1,styleContent,"订单ID");
ImpApiReturn.createExcelCell(row2,1,1,styleContent,"订单编号");
ImpApiReturn.createExcelCell(row2,2,1,styleContent,"客户ID");
ImpApiReturn.createExcelCell(row2,3,1,styleContent,"客户名称");
ImpApiReturn.createExcelCell(row2,4,1,styleContent,"部门名称");
ImpApiReturn.createExcelCell(row2,5,1,styleContent,"产品名称");
ImpApiReturn.createExcelCell(row2,6,1,styleContent,"销售日期");
ImpApiReturn.createExcelCell(row2,7,1,styleContent,"合同金额");
ImpApiReturn.createExcelCell(row2,8,1,styleContent,"税率");
ImpApiReturn.createExcelCell(row2,9,1,styleContent,"税后金额");
for(int i=0;i<list.length();i++){
HSSFRow rows = sheet.createRow((short) i+4);//表格内容是从第5行开始,每循环一次增加一行
//订单id
ImpApiReturn.createExcelCell(rows,0,1,styleSubstance,list.get(i).get("id")+"");
//订单编号
ImpApiReturn.createExcelCell(rows,1,1,styleSubstance,list.get(i).get("order_no")+"");
//客户ID
ImpApiReturn.createExcelCell(rows,2,1,styleSubstance,list.get(i).get("customer_id")+"");
//客户名称
ImpApiReturn.createExcelCell(rows,3,1,styleSubstance,list.get(i).get("customerName")+"");
//部门名称
ImpApiReturn.createExcelCell(rows,4,1,styleSubstance,list.get(i).get("deptname")+"");
//产品名称
ImpApiReturn.createExcelCell(rows,5,1,styleSubstance,list.get(i).get("product")+"");
//销售日期
ImpApiReturn.createExcelCell(rows,6,1,styleSubstance,list.get(i).get("order_date")+"");
//合同金额
ImpApiReturn.createExcelCell(rows,7,1,styleSubstance,list.get(i).get("contract_money")+"");
//税率
ImpApiReturn.createExcelCell(rows,8,1,styleSubstance,list.get(i).get("customer_rate")+"");
//税后金额
ImpApiReturn.createExcelCell(rows,9,1,styleSubstance,"税后金额:8.88");
//更新订单的导出状态 改为已导出
DataHelper.Execute(LoadUtil.LoadTable("oms_order"),"update ds_oms_order set import_state=2 where id=%s", list.get(i).get("id"));
}
fOut = new FileOutputStream(fileOne);
workbook.write(fOut);
fOut.flush();
fOut.close();// 操作结束,关闭文件
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 创建excel单元格
*
* @param rows
* @param col
* @param code
* @param style
* @param contents
*/
public static void createExcelCell(HSSFRow rows, int col, int code,
HSSFCellStyle style, String contents) {
HSSFCell cell1 = rows.createCell((short) col);
cell1.setEncoding((short)code);
cell1.setCellValue(contents);
cell1.setCellStyle(style);
}
代码里的注释写的也比较详细了。
下面简单讲解下:
一:excel里面有三种不同的格式。1.订单明细 2.一排标题3.表格内容。所以要设置三种不同的字体。也就有不同的三种样式。
二:创建excel步骤:1.创建输出流,将内容输出到excel文件中:File fileOne = new File(excelTwo);// 创建第一个excel文件对象
FileOutputStream fOut = null;
2.创建excel实体 HSSFWorkbook workbook = new HSSFWorkbook();
3.创建sheet实体 HSSFSheet sheet = workbook.createSheet("订单明细");
解决sheet 中文乱码问题: workbook.setSheetName(0, "订单明细",(short)1);//解决sheet名中文乱码问题
4.然后创建行row HSSFRow row = sheet.createRow((short) 0); //第一行
5.由行来创建该行的列(即单元格) HSSFCell ce = row.createCell((short) 0); //第一行的第一列
6.比如你想合并n个单元格 :sheet.addMergedRegion(new Region(0, (short) 0, 2, (short) 9));
sheet为sheet实体,四个参数解释下:0从0行开始,//参数为int
(short)0从0列开始//类型为short
2 到第三行//参数为int
(short)9为到第10列//参数为short
上述就是将0到三行,0到10列合并为一个单元格。就是我的"订单明细"
7,设置好单元格后,接下来就是给单元格设置样式,设置内容等。可以参照代码里面
8.将该excel对象用流输出到excel文件中去 fOut = new FileOutputStream(fileOne);
workbook.write(fOut);
fOut.flush();
fOut.close();// 操作结束,关闭流
Ok,基本就这些了。如有错误或者不够好的地方,欢迎讨论
关于poi jar包下载地址:
https://download.csdn.net/download/echohuangshihuxue/10613610
上一篇: Python读取excel表格中的网址并批量打开网页
下一篇: 微软:基于Cocos2d
推荐阅读
-
jsp利用POI生成Excel并在页面中导出的示例
-
PHP实现实时生成并下载超大数据量的EXCEL文件详解
-
Java利用exe4j工具生成exe文件实例演示,IntelliJ IDEA将项目转化为jar包方法,运行生成后的程序弹出exe4j提示处理
-
java使用POI实现excel文件的导入和导出(通用方法)
-
AngularJS基于http请求实现下载php生成的excel文件功能示例
-
jsp利用POI生成Excel并在页面中导出的示例
-
Java利用Phantomjs实现生成图片的功能
-
Java使用Apache.POI中HSSFWorkbook导出到Excel的实现方法
-
POI实现Excel导入导出所需的maven依赖以及import的包
-
Java Hutool工具实现验证码生成及Excel文件的导入和导出