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(& ...
随机推荐
- Mybatis动态查询语句
MyBatis中动态SQL语句完成多条件查询 标签: mybatis动态SQL多条件查询java.sql.SQLSyntaxEr 2015-06-29 19:00 22380人阅读 评论(0) 收藏 ...
- 都说 WebP 厉害,究竟厉害在哪里?
之前在< WebP 的前世今生 >一文中,介绍了 WebP 图片格式是由 Google 基于 VP8 视频编码格式研发的,同时提供有损压缩和无损压缩两种格式,那么今天就来看看 WebP 有 ...
- 2017年11月1日 初学者易上手的SSH-spring 01控制反转(IOC)
这章开始学习SSH中最后的一个框架spring.Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用. 首先就来学习一下I ...
- android wear开发:为可穿戴设备创建一个通知 - Creating a Notification for Wearables
注:本文内容来自:https://developer.android.com/training/wearables/notifications/creating.html 翻译水平有限,如有疏漏,欢迎 ...
- 走进Spark生态圈:环境的安装与配置
什么是Spark? Apache Spark 是一种大规模数据处理的快速通用引擎,使用基于内存的处理方式,较与MapReduce而言,解决了其shuffle多次IO操作带来的效率低问题,从而达到快速的 ...
- 约瑟夫环C#解决方法
/*约瑟夫环 (问题描述) 约瑟夫问题的一种描述是:编号为1,2,......n,的n个人按顺时针方向围坐一圈,每个人持有一个密码(正整数).一开始任意选 一个正整数作为报数的上限值m,从第一个人开始 ...
- 休息,归类一下CSS初级的东西
css基础的东西集中体现在了"磊盒子"这一个枯燥无味的东西上面,灵活的运用盒子的内外边距,浮动,定位以及一些基础的属性,将一个静态的页面变得磊出来,这是CSS基础的练习. 在css ...
- python基础(二)-------数据类型
python开发基础篇(二)数据类型 python数据类型有: 1.数字 1.只能存放一个值 2.一经定义,不可更改 3.直接访问 主要的分类为:整型,长整型,(python2有长整型的概念Pytho ...
- pt-online-schema-change和默认值关系
在使用pt-online-schema-change会遇到如下的错误导致表修改失败: Copying rows caused a MySQL error 1364,Message: Field 'XX ...
- Python PycURL 网络编程
http://blog.chinaunix.net/uid-20544356-id-290882.html 在使用urllib的时候经常会死掉,以前debug过,是没有设置 timing out 所以 ...