POI tools 参数化生成excel表格
package com.eccom.neteagle.server.confsave.service.impl; import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.IndexedColors; public class ProduceSheet { /*
*
* 配置:表名 、项宽、列名、路径、参数、表数据 即可生成
*
* @author Na
*
*/
private HSSFWorkbook wb = new HSSFWorkbook(); private HSSFCellStyle styletop = wb.createCellStyle(); private HSSFCellStyle stylebody = wb.createCellStyle(); private HSSFFont fonttop = wb.createFont();//表头样式 private HSSFFont fontbody = wb.createFont();//表体样式 private HSSFSheet sheet; private HSSFRow row; private String excelName="NONAME";//表名 private String pathName = "NOPATH";//存放路径 private List<List<String>> datas;//表体数据 List<String> columnWidth_list ;//调整的列宽参数 List<String> columnName_list ;//列头名称 //List<String> columnParams;//列参数 public void initSheet(String excelName,String pathName,List<List<String>> datas,List<String> columnWidth_list,List<String> columnName_list){
this.excelName = excelName;
this.pathName = pathName;
this.datas = datas;
this.columnName_list = columnName_list ;
this.columnWidth_list = columnWidth_list;
// this.columnParams = columnParams;
initClass();
} /**
*
* @描述:初始化表的宽度,名称等
*
* */
public void createSheel(){
setName();
setCellwidth();
setColumnName();
assignment();
setSavePath();
drawTable();
} /**
* @描述:表的样式初始化 可以自调
*
* */
private void initClass() {
//设置表头字体
fonttop.setFontName("黑体");
fonttop.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
fonttop.setFontHeightInPoints((short) 10);
//设置表体字体
fontbody.setFontName("Arial");
fontbody.setFontHeightInPoints((short) 10);
//设置表头边框
styletop.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 居中
styletop.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 下边框
styletop.setBorderLeft(HSSFCellStyle.BORDER_THIN);// 左边框
styletop.setBorderTop(HSSFCellStyle.BORDER_THIN);// 上边框
styletop.setBorderRight(HSSFCellStyle.BORDER_THIN);// 右边框
styletop.setFont(fonttop);// 设置字体
styletop.setFillForegroundColor(IndexedColors.TAN.getIndex()); // 表头颜色
styletop.setFillPattern(CellStyle.SOLID_FOREGROUND); // 设置显示前置
//设置表体边框
stylebody.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 居中
stylebody.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 下边框
stylebody.setBorderLeft(HSSFCellStyle.BORDER_THIN);// 左边框
stylebody.setBorderTop(HSSFCellStyle.BORDER_THIN);// 上边框
stylebody.setBorderRight(HSSFCellStyle.BORDER_THIN);// 右边框
stylebody.setFont(fontbody);// 设置字体
}
private void setName(){
setSheet(wb.createSheet(excelName));
}
/**
*
* @描述:初始化每一列的宽度
*
* */
private void setCellwidth(){
try {
for(int i=0,s=columnWidth_list.size();i<s;i++){
int length = 256*Integer.parseInt(columnWidth_list.get(i));
System.out.println("长度:"+length);
getSheet().setColumnWidth(i,length);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*
* @描述:初始化每一个列名称
*
* */
private void setColumnName(){
setRow(getSheet().createRow((int) 0));
HSSFCell cell ;
for(int i=0,s=columnName_list.size();i<s;i++){
cell = getRow().createCell(i);
System.out.println("ColumnName :"+columnName_list.get(i));
cell.setCellValue(columnName_list.get(i));
cell.setCellStyle(styletop); }
}
/**
*
* @描述:从datas中逐行赋值
*
* */
private void assignment(){
for(int i=0,length=getDatas().size();i<length;i++){
setRow(getSheet().createRow((int) i + 1));
for(int j=0,length0=getDatas().get(i).size();j<length0;j++){
getRow().createCell(j).setCellStyle(stylebody);
getRow().getCell(j).setCellValue(getDatas().get(i).get(j));
System.out.println(getDatas().get(i).get(j) + " ");
}
}
}
/**
*
* @描述:绘制表
*
* */
private void drawTable(){
try {
FileOutputStream fout;
fout = new FileOutputStream(getPathName());
wb.write(fout);
fout.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch(IOException e){
e.printStackTrace();
}
}
/**
*
* @描述:设置表名
*
* */
public String getPathName() {
return pathName;
}
/**
*
* @描述:设置存放路径 -> 表名 + 时间
*
* */
private void setSavePath(){
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd_HHmmss");
//String[] paths = getPathName().split("-");
//String filepath =SysConfig.getInstance().path+File.separator;
// for (int i = 0; i < paths.length-1; i++) {
// filepath =filepath+paths[i]+File.separator;
// }
// filepath = filepath.substring(0,filepath.length()- 14);
//filepath = filepath +getExcelName()+ df.format(new Date())+".xls";
String filepath = "d:"+File.separator+"info";
judeDirExists(filepath);
filepath +=File.separator+df.format(new Date())+".xls";
System.out.println("path:"+filepath);
setPathName(filepath);
} public void setPathName(String pathName) {
this.pathName = pathName;
} //判断路径是否存在 没有就创建
private void judeDirExists(String file_path) {
File dir = new File(file_path);
if (dir.exists()) {
}else{
dir.mkdir();
}
} public List<List<String>> getDatas() {
return datas;
} public HSSFSheet getSheet() {
return sheet;
} public void setSheet(HSSFSheet sheet) {
this.sheet = sheet;
} public HSSFRow getRow() {
return row;
} public void setRow(HSSFRow row) {
this.row = row;
}
}
test main:
public static void main(String[] args) {
List<List<String>> datas = new ArrayList<List<String>>();
for(int i=0;i<10;i++){
List<String> list0 = new ArrayList<String>();
for(int j=0;j<6;j++){
list0.add("ok"+i+j);
}
datas.add(list0);
}
for(List<String> s:datas){
for(String r :s){
System.out.println(r +" ");
}
}
ProduceSheet sheet = new ProduceSheet();
String excelName = "配置下发准备" ;
String pathName = "c:/" ;
List<String> columnWidth_list = new ArrayList<String>();
columnWidth_list.add("10");
columnWidth_list.add("10");
columnWidth_list.add("10");
columnWidth_list.add("10");
columnWidth_list.add("10");
columnWidth_list.add("10");
List<String> columnName_list = new ArrayList<String>();
//变更名称 任务名称 设备 变更命令 验证命令 回退命令
columnName_list.add("变更名称");
columnName_list.add("任务名称");
columnName_list.add("设备");
columnName_list.add("变更命令");
columnName_list.add("验证命令");
columnName_list.add("回退命令");
sheet.initSheet(excelName, pathName, datas,columnWidth_list, columnName_list );
sheet.createSheel();
}
将重复的工作参数化 ,以后生成表格,直接将必要信息写入指定的list中,就可以完成对表格的生成 。
如果有更好的方法请指教
POI tools 参数化生成excel表格的更多相关文章
- H5纯前端生成Excel表格
H5纯前端生成Excel表格方法如下: <!DOCTYPE html> <html> <head> <title></title> < ...
- Java操作Jxl实现导出数据生成Excel表格数据文件
实现:前台用的框架是Easyui+Bootstrap结合使用,需要引入相应的Js.Css文件.页面:Jsp.拦截请求:Servlet.逻辑处理:ClassBean.数据库:SQLserver. 注意: ...
- 详解python操作生成excel表格,并且填充数据
最近在研究python操作excel表格的问题,首先读取excel表格觉得平时用的多,不怎么有难度,就是pyhon生成excel表格的时候,平时不怎么用,所以重点研究了一下,现总结如下: 1.首先用到 ...
- Java 利用poi生成excel表格
所需jar包,如下所示 写一个excel工具类 ExcelUtils .java import java.lang.reflect.Field; import java.util.Iterator; ...
- JavaWeb开发中采用FreeMarker生成Excel表格
最近做了一个需求,要求导出一个采购合同的Excel表格,这个表格样式比较多.由于是合同,这个Excel表格里面有好多格式要求,比如结尾处签字那部分就有格式要求.这里介绍种采用FreeM ...
- 数据库数据生成Excel表格(多用在导出数据)
最近在项目开发中遇到这样一个需求,用户聊天模块产品要求记录用户聊天信息,但只保存当天的,每天都要刷新清空数据,但聊天记录要以Excel的形式打印出来,于是就引出了将数据库的数据导出成Excel表格的需 ...
- 利用Apache POI 实现简单的Excel表格导出
1.利用POI API实现简单的Excel表格导出 首先假设一个学生实体类: package com.sun.poi.domain; import java.io.Serializable; impo ...
- 使用poi和jfreechart生成excel图表图片
最近项目在频繁的操作excel,里边涉及到很多和图表有关的东西.有时候需要使用java操作excel自带的图标,比较复杂的我们都是使用excel模板的形式实现. 除此之外,也有一些功能只需要生成对应的 ...
- PHP生成excel表格文件并下载
本文引自网络,仅供自己学习之用. 利用php导出excel我们大多会直接生成.xls文件,这种方便快捷. function createtable($list,$filename){ header(& ...
随机推荐
- ④bootstrap列表使用基础案例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JAVAscript学习笔记 jsDOM 第五节 (原创) 参考js使用表
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- HTML学习笔记 css定位(静态,相对,固定,绝对布局)偏移案例 第十二节 (原创) 参考使用表
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 表空间与数据文件Offline,online的区别
首先明确,表空间与数据文件的关系:Oracle数据库表空间有两种,一种smallfile小文件表空间(默认),另一种bigfile大文件表空间: 默认表空间与数据文件的关系:允许一对多的处理方式,一个 ...
- Velocity(2)——常用语法
Velocity是一个基于java的模板引擎(template engine),它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象.作为一个比较完善 ...
- .Net 中通用的FormatString格式符整理
格式化日期和数字的字符串经常要用到这个, 就把帮助里面的东西大概整理了一些列在这里了. 下表描述了用来格式化 DateTime 对象的标准格式说明符.格式说明符 名称 说明 d 短日期模式 显示由与当 ...
- javascript第三章--引用类型
① Object类型 ② Array类型 ③ Date类型 ④ RegExp类型 ⑤ Function类型 ⑥ 基本包装类型 ⑦ 单体内置对象
- 解决No enclosing instance of type * is accessible
写一个内部类,并在构造函数中初始化时,遇到报错,搜索问题后发现,有网友出现过类似的问题,下面这个是说的浅显明白的,并确实解决了问题.于是,以下内容照搬过来,不再多费键盘了. public class ...
- 巧学DBhelper
这几天在教我很重要的人学习,她属于那种超级小白,很超级的那种. 教她的过程中 发现有的知识点 不管这么教都不会.DBhelper就是不知道怎么记. 当时我就想到 杰哥(程杰)的出的大话系列,和他写书的 ...
- ASP.NET异常处理机制
try{ //获取并使用资源,可能出现异常}catch(DivideByZeroException de){}catch(ArithmeticException ae){}catch(Exceptio ...