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表格的更多相关文章

  1. H5纯前端生成Excel表格

    H5纯前端生成Excel表格方法如下: <!DOCTYPE html> <html> <head> <title></title> < ...

  2. Java操作Jxl实现导出数据生成Excel表格数据文件

    实现:前台用的框架是Easyui+Bootstrap结合使用,需要引入相应的Js.Css文件.页面:Jsp.拦截请求:Servlet.逻辑处理:ClassBean.数据库:SQLserver. 注意: ...

  3. 详解python操作生成excel表格,并且填充数据

    最近在研究python操作excel表格的问题,首先读取excel表格觉得平时用的多,不怎么有难度,就是pyhon生成excel表格的时候,平时不怎么用,所以重点研究了一下,现总结如下: 1.首先用到 ...

  4. Java 利用poi生成excel表格

    所需jar包,如下所示 写一个excel工具类 ExcelUtils .java import java.lang.reflect.Field; import java.util.Iterator; ...

  5. JavaWeb开发中采用FreeMarker生成Excel表格

            最近做了一个需求,要求导出一个采购合同的Excel表格,这个表格样式比较多.由于是合同,这个Excel表格里面有好多格式要求,比如结尾处签字那部分就有格式要求.这里介绍种采用FreeM ...

  6. 数据库数据生成Excel表格(多用在导出数据)

    最近在项目开发中遇到这样一个需求,用户聊天模块产品要求记录用户聊天信息,但只保存当天的,每天都要刷新清空数据,但聊天记录要以Excel的形式打印出来,于是就引出了将数据库的数据导出成Excel表格的需 ...

  7. 利用Apache POI 实现简单的Excel表格导出

    1.利用POI API实现简单的Excel表格导出 首先假设一个学生实体类: package com.sun.poi.domain; import java.io.Serializable; impo ...

  8. 使用poi和jfreechart生成excel图表图片

    最近项目在频繁的操作excel,里边涉及到很多和图表有关的东西.有时候需要使用java操作excel自带的图标,比较复杂的我们都是使用excel模板的形式实现. 除此之外,也有一些功能只需要生成对应的 ...

  9. PHP生成excel表格文件并下载

    本文引自网络,仅供自己学习之用. 利用php导出excel我们大多会直接生成.xls文件,这种方便快捷. function createtable($list,$filename){ header(& ...

随机推荐

  1. jQuery点击下拉菜单的展示与隐藏

    首先点击显示某个div,然后要求再次点击时消失,或者点击document的其他地方会隐藏掉这个层,涉及到冒泡的问题,阻止document冒泡到dom上.代码如下: var $el = $(" ...

  2. 【框架学习与探究之日志组件--Log4Net与NLog】

    前言 本文欢迎转载,作者原创地址:http://www.cnblogs.com/DjlNet/p/7604340.html 序 近日,天气渐冷,懒惰的脑虫又开始作祟了,导致近日内功修炼迟迟未能进步,依 ...

  3. flask中使用xlsxwriter导出excel文件

    最近需要使用flask导出xlsxwriter生成的excel文件,在文件比较小的情况下,可以直接导出. 首先,这里使用了StringIO,导出使用的模块 import xlsxwriter impo ...

  4. JVM命令

    jstack--jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息: jinfo--jinfo可以输出并修改运行时的java 进程的opts.用处比较简单 ...

  5. tsung压力测试——tcp测试tsung.xml配置模版说明

    <?xml version="1.0"?> <!DOCTYPE tsung SYSTEM "/usr/local/share/tsung/tsung-1 ...

  6. 关于Python在Linux、Mac和Windows上的安装方法总结

    一.Linux下安装python   1.python源码安装包下载地址:   https://www.python.org/downloads/source/   2.下载完tar.xz压缩包以后, ...

  7. 学python3的书

    <Python Cookbook>3rd Edition http://python3-cookbook.readthedocs.io/zh_CN/latest/copyright.htm ...

  8. Ani动态光标格式解析

    数据结构: Ani文件中的数据是按区段存放的,区段数据结构如下: 标识符(4字节ASCII),数据长度(一个DWORD),数据 按照此规则来看Ani文件,文件起始12字节可以理解为标准文件头,除数据长 ...

  9. head first python菜鸟学习笔记(第三章)

    1.os.chdir()切换到指定目录下,os.getcwd(),得到当前目录. >>> import os>>> os.chdir('D:\\CodeDocume ...

  10. Python之int内部功能介绍

    int内部功能的介绍 type(): 1.基本数据类型使用type()函数时,得到相应的数据类型a = 12b = 12.01c = "123"print(type(a)) > ...