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(& ...
随机推荐
- 混合app
cordova run android 把应用发送到手机 ionic serve 电脑浏览器调试命令 创建: cordova create hello co ...
- C#中结构体定义并转换字节数组
最近的项目在做socket通信报文解析的时候,用到了结构体与字节数组的转换:由于客户端采用C++开发,服务端采用C#开发,所以双方必须保证各自定义结构体成员类型和长度一致才能保证报文解析的正确性,这一 ...
- RobotFramework自动化测试环境配置
现在工作是做自动化测试平台维护的,平台用的C#做的,主要是用来测试CMBRun项目,它是c/s结构的项目,而b/s结构的项目主要使用RF+Python来做.做这块之前听过自动化测试,身边的朋友也有做这 ...
- javaMybatis映射属性,高级映射
映射文件的sql属性: id:标识符(一般都是dao层方法名) resultType:sql返回类型 resultMap:放回的映射类型 parameterType:参数类型 useGenerated ...
- Python学习--语句
一.print 和 import print 打印多个表达式,用逗号隔开 >>> print 'ab','cd' ab cd import import somemodule fro ...
- Python进阶---面向对象第三弹(进阶篇)
Python对象中一些方法 一.__str__ class Teacher: def __init__(self,name,age): self.name=name self.age=age self ...
- 转-Gitorious搭建步骤
先标记一下,后续手动验证 http://blog.csdn.net/king_sundi/article/details/7457475 安装Gitorious Git是一个分布式的版本控制系统,用于 ...
- eclipse项目中丢失的R包找回方法
当我们项目中的R文件丢失的时候会令我们痛苦不已,怎样找回呢?总不能删了吧,那样心血会毁于一旦的,我们肯定不会那样做,那要怎么办呢?我这里提供三种方法: 一,一般情况下这样: 方法一:选中 ...
- GridControl使用技巧总结,更新中...
1如何禁用GridControl中单击列弹出右键菜单 设置Run Design->OptionsMenu->EnableColumnMenu 设置为:false 2如何定位到第一条数据/记 ...
- 0e开头MD5值小结
s878926199a 0e545993274517709034328855841020 s155964671a 0e342768416822451524974117254469 s214587387 ...