import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelTemplateImpl implements ExcelTemplate {
private final Map<String, Workbook> wbmap = new HashMap<String, Workbook>(2);
private List<Map<String, Object>> datas;
private String dataFormat = "yyyy-MM-dd";
private String sheetName;
private boolean isAutoSizeCoumn = false;
private Map<String, String> mess;
public ExcelTemplateImpl(List<Map<String, Object>> datas) {
init(datas);
}
/**
* 初始化
*
* @param datas
*/
private void init(List<Map<String, Object>> datas) {
this.datas = datas;
// 构造2003、2007版excel
wbmap.put(ExcelTemplate.EXCEL_03, new HSSFWorkbook());
wbmap.put(ExcelTemplate.EXCEL_07, new XSSFWorkbook());
}
/**
* 设置日期样式。
*/
public void setDateFormat(String dateFormat) {
this.dataFormat = dateFormat;
}
/**
* 设置表单名称。
*/
public void setSheetName(String sheetName) {
this.sheetName = sheetName;
}
/**
* 是否自动调整列宽。
*/
public void isAutoSizeColumn(boolean b) {
this.isAutoSizeCoumn = b;
}
/**
* 转换中应为呼唤
*
* @param mess
*/
public void setMess(Map<String, String> mess) {
this.mess = mess;
}
/**
* 同时创建03、07版
*
* @return key=2003或key=2007 对应为excel2003、excel2007
*/
public Map<String, Workbook> createExcel() {
Set<Entry<String, Workbook>> wbset = wbmap.entrySet();
Iterator<Entry<String, Workbook>> eit = wbset.iterator();
while (eit.hasNext()) {
Entry<String, Workbook> workEntry = eit.next();
Workbook wb = workEntry.getValue();
initExcel(wb);
}
return wbmap;
}
/**
* 创建Excel具体版
*
* @param excelVersion
* 2003或2007
* @return
*/
public Workbook createExcel(String excelVersion) {
Workbook wb = wbmap.get(excelVersion);
initExcel(wb);
return wb;
}
/**
* @param workbook
*/
private void initExcel(Workbook workbook) {
// 设置样式
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(workbook.createDataFormat().getFormat(
dataFormat));// 日期格式
cellStyle.setAlignment(CellStyle.ALIGN_CENTER);// 居中
cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
//设置单元格字体
Font font = workbook.createFont();
font.setColor(HSSFFont .COLOR_RED);
cellStyle.setFont(font);
// 创建一个新的表、并创建 名称
Sheet sheet = null;
if (null == sheetName || "".equals(sheetName)) {
sheet = workbook.createSheet();
} else {
sheet = workbook.createSheet(sheetName);
}
for (int i = 1; i < datas.size(); i++) {
Map<String, Object> map = datas.get(i);// 每一个map是一条记录
// 定义行(列名第一行)
Row titleRow = sheet.createRow(0);
titleRow.setHeight((short) 500);// 设置表头行的高度
Row row = sheet.createRow(i);
Set<Entry<String, Object>> set = map.entrySet();
Iterator<Entry<String, Object>> it = set.iterator();
int x = 0;
while (it.hasNext()) {//表示一列
// 列名
Entry<String, Object> entry = it.next();
Cell titleCell = titleRow.createCell(x);
String titleName = entry.getKey();
if (null == mess || null == mess.get(titleName)) {
titleCell.setCellValue(titleName);
} else {
titleCell.setCellValue(mess.get(titleName));
}
titleCell.setCellStyle(cellStyle);// 设置表头行的样式
// 设置列名样式
Cell cell = row.createCell(x);
cell.setCellStyle(cellStyle);
Object value = entry.getValue();
// 处理单元格数据
if (value instanceof String) {
cell.setCellValue(value.toString());
} else if (value instanceof Double) {
cell.setCellValue((Double) value);
} else if (value instanceof Integer) {
cell.setCellValue((Integer) value);
} else if (value instanceof Float) {
cell.setCellValue((Float) value);
} else if (value instanceof Boolean) {
cell.setCellValue((Boolean) value);
} else if (value instanceof java.util.Date
| value instanceof java.sql.Date) {
cell.setCellValue((Date) value);
}
x++;
}
// 自动调整列宽
if (isAutoSizeCoumn) {
sheet.autoSizeColumn(i);
}
}
}
public List<Map<String, Object>> getDatas() {
return datas;
}
public void setDatas(List<Map<String, Object>> datas) {
this.datas = datas;
}
public String getSheetName() {
return sheetName;
}
public Map<String, String> getMess() {
return mess;
}
}
分享到:
相关推荐
六轴机械手程序 用信捷XD5和威纶触摸屏编写。 此程序已经实际设备上批量应用,程序成熟可靠,借鉴价值高,程序有注释。
Java毕业设计-基于SpringBoot的旅游网站项目源码+数据库(高分毕设),个人经导师指导并认可通过的毕业设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 Java毕业设计-基于SpringBoot的旅游网站项目源码+数据库(高分毕设)Java毕业设计-基于SpringBoot的旅游网站项目源码+数据库(高分毕设)Java毕业设计-基于SpringBoot的旅游网站项目源码+数据库(高分毕设)Java毕业设计-基于SpringBoot的旅游网站项目源码+数据库(高分毕设)Java毕业设计-基于SpringBoot的旅游网站项目源码+数据库(高分毕设)Java毕业设计-个人经导师指导并认可通过的毕业设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!个人经导师指导并认可通过的毕业设计项目,评审分98分,项目中的源码都
世界著名女性美容秘诀(1).pdf
豫章医萃——名老中医临床经验精选.pdf
dubbo+zookeeper+tomcat资源包
YouQu(有趣),一个使用简单且功能强大的自动化测试框架。YouQu(有趣)是统信公司(Deepin/UOS)开源的一个 Linux 操作系统的自动化测试框架,支持多元化元素定位和断言、用例标签化管理和执行、强大的日志和报告输出等特色功能,同时完美兼容 X11、Wayland 显示协议,环境部署简单,操作易上手。
code.ipynb,个人学习整理,仅供参考
单片机的流水灯。资源来源于网络分享,如有侵权请告知!
Protel99se的元件库&Protel封装库&PCB封装教程 包含以下内容: 元件库 PCB库存封装缩写说明 PCB封装详解 Protel常用封装库 Protel常用元件库 Protel99se的元件库&Protel封装库&PCB封装教程
windy,scatter,lines,geotiff render,leaflet-echarts4 ... 一些地图可视化demo,大部分为气象数据的渲染传单学习例子演示项目设置npm install编译和热重载以进行开发npm run serve编译并压缩以用于生产npm run buildgeotiff文件在leaflet中的几种渲染方式怎样解析一个geotiff文件解析geotiff文件我们需要用到开源的库geotiff,具体用法如下import * as GeoTIFF from 'geotiff'const tiff= await GeoTIFF.fromArrayBuffer(buffer);let image = await tiff.getImage();this.tiffWidth = image.getWidth();this.tiffHeight = image.getHeight();let rasters = await image.readRasters();let tiepoint = image
200款ps艺术字体集合
Python编写录屏录音工具,工具界面十分简单,默认是全屏录屏录音(第一次使用得手动开启电脑声音设置的立体声混音作为输入),勾选不录制扬声器系统声音后只录屏,如果想自定义区域录制要先选择自定义区域录屏,然后再点击开始录制即可。 pycharm打开代码,运行即可
基于BufferedRandomAccessFile+Forkjoin读取大数据文件报文解析工具内容使用RandomAccessFile(BufferedRandomAccessFile 摘自网络)读取文本文件. 读取文件后使用Forkjoin任务拆分. 简单使用,查看简单示例SimpleTextMessageProcessorController如何使用使用docker compose创建一个mysql容器,cd yourproject docker-compose up使用test下的GeneratorServiceEntity生成mybatis文件 然后启动springboot应用启动成功,访问http://localhost:8080/person模拟场景 用户向第三方注册信息,返回token1初始化数据,例如1w条数据http://localhost:8080/insertBatch/100002导出离线数据http://localhost:8080/export3本地高速读取http://localhost:808
comsol枝晶生长 模型包括:典型,形状成核,随机成核,均匀沉积,雪花晶形成过程。 适用于电池,电化学沉积,催化的模拟学习。
安卓项目源码Android Rss订阅源码Demo提取方式是百度网盘分享地址
这是一款基于html5 canvas实现仿视频网站文字弹幕动画特效源码。界面上呈现出类似视频网站上文字弹幕的滚动动画效果,并带有清除与添加按钮来控制弹幕动画的清空与显示功能
村级(居委会)行政区划shp矢量数据 坐标系: wgs1984 字段包含: 村名称:village 乡镇名称:town 县名称:district 市名称:city 省名称:province
企业级数据大屏、数据可视化企业级数据可视化大屏
电源PFC入门 TI单相三相维也纳VIENNA整流器无桥 原理图PCB中文资料
编译原理期末试卷选择题