POI导出excel文件样式
需求:
公司业务和银行挂钩,各种形式的数据之间交互性比较强,这就涉及到了存储形式之间的转换
比如数据库数据与excel文件之间的转换
解决:
我目前使用过的是POI转换数据库和文件之间的数据,下边上代码
package org.triber.portal.model.area; import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor; import java.io.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map; public class AreaExcelUtil { /**
* 导出excel
* @param tableTileCH 表中文字段数组
* @param fileName 文件全路径名
* @param list 数据集
* @param tableTileEN 映射字段集
*/
public void exportExcel (String[] tableTileCH, String fileName, List<?> list, String[] tableTileEN){
//文件不存在则创建文件
File file=new File(fileName);
if(!file.exists())
{
try {
file.createNewFile();
} catch (IOException e) {
System.out.println("failed to create file.");
e.printStackTrace();
}
}
OutputStream out= null;
try {
out = new FileOutputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace(); }
//创建工作簿
HSSFWorkbook workbook=new HSSFWorkbook();
HSSFFont f=workbook.createFont();
f.setBold(true);
f.setFontName("宋体");
f.setColor((short)100);
HSSFCellStyle style = workbook.createCellStyle();
// 设置这些样式
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中
// 背景色
style.setFillForegroundColor(HSSFColor.YELLOW.index);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
style.setFillBackgroundColor(HSSFColor.YELLOW.index);
// 设置边框
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
style.setBorderTop(HSSFCellStyle.BORDER_THIN);
// 自动换行
style.setWrapText(true);
HSSFSheet sheet=workbook.createSheet("shoot1");
sheet.setDefaultColumnWidth((short) 15); //这里很关键,不设置这里导出的列宽窄,数据不正确
/**
* 写入数据
*/
HSSFRow row=sheet.createRow(0);//创建一行
row.setRowStyle(style);
String str = "";
//生成列名
for (int i = 0; i < tableTileCH.length; i++) {
//excel的格子单元 一行
HSSFCell cell = row.createCell(i);
cell.setCellValue(tableTileCH[i]);
}
//生成列值
for (int i = 0; i < list.size(); i++) {
HSSFRow dataRow = sheet.createRow(i + 1);
for (int m = 0; m < tableTileCH.length; m++) {
Map<String, Object> map = (Map<String, Object>) list.get(i);
HSSFCell dataCell = dataRow.createCell(m);
str = String.valueOf(
map.get(tableTileEN[m])) == null ? "": String.valueOf(map.get(tableTileEN[m]));
str = str.equals("null") ? "" : str;
dataCell.setCellValue(str);
}
}
//写文件
try {
workbook.write(out);
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
//关闭流
out.flush();
out.close();
workbook.close();
} catch (IOException e) {
e.printStackTrace();
}
} } /**
* 从Excel此向数据库导入数据
*/
public List<Area> importExcel(FileInputStream fileInputStream) {
List<Area> list = new ArrayList<Area>();
try {
//创建Excel工作薄
HSSFWorkbook hwb = new HSSFWorkbook(fileInputStream);
//得到第一个工作表
HSSFSheet sheet = hwb.getSheetAt(0);
HSSFRow row = null;
//表示工作表的总数
for(int i = 0; i < hwb.getNumberOfSheets(); i++){
sheet = hwb.getSheetAt(i);
//行数
for(int j = 1; j < sheet.getLastRowNum(); j++){
row = sheet.getRow(j);
Area area = new Area();
HSSFCell areaId = row.getCell(0);
area.setAreaId(getCellValue(areaId));
HSSFCell areaDscr = row.getCell(1);
area.setAreaDscr(getCellValue(areaDscr));
HSSFCell level = row.getCell(2);
area.setLevel(getCellValue(level));
HSSFCell beginTime = row.getCell(3);
area.setBeginTime(getCellValue(beginTime));
HSSFCell closeTime = row.getCell(4);
area.setCloseTime(getCellValue(closeTime));
HSSFCell entryDis = row.getCell(5);
if("是".equals(getCellValue(entryDis) )){
area.setEntryDis("1");
}else { area.setEntryDis("0");}
HSSFCell entryCode = row.getCell(6);
area.setEntryCode(getCellValue(entryCode));
HSSFCell oldCode = row.getCell(7);
area.setOldCode(getCellValue(oldCode));
HSSFCell oldId = row.getCell(8);
area.setOldId(getCellValue(oldId));
HSSFCell reviseTime = row.getCell(9);
area.setReviseTime(getCellValue(reviseTime));
HSSFCell state = row.getCell(10);
area.setState(getCellValue(state));
HSSFCell bigCollCode = row.getCell(11);
area.setBigCollCode(getCellValue(bigCollCode));
//生成结果集
list.add(area);
}
}
} catch (IOException e) {
e.printStackTrace();
}
return list;
} /**
* 判断从Excel文件中解析出来数据的格式
* @param cell 待解析的单元格
* @return 字符串
*/
private static String getCellValue(HSSFCell cell){ String value = null;
if(null!=cell) {
switch (cell.getCellType()) {
//字符串
case HSSFCell.CELL_TYPE_STRING: {
value = cell.getRichStringCellValue().getString();
break;
}
//数字
case HSSFCell.CELL_TYPE_NUMERIC: {
if (HSSFDateUtil.isCellDateFormatted(cell)) {
//如果是date类型则 ,获取该cell的date值
Date date = HSSFDateUtil.getJavaDate(cell.getNumericCellValue());
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
value = format.format(date);
} else {
long dd = (long) cell.getNumericCellValue();
value = dd + "";
}
break;
}
case HSSFCell.CELL_TYPE_BLANK: {
value = "";
break;
}
case HSSFCell.CELL_TYPE_FORMULA: {
value = String.valueOf(cell.getCellFormula());
break;
}
//boolean型值
case HSSFCell.CELL_TYPE_BOOLEAN: {
value = String.valueOf(cell.getBooleanCellValue());
break;
}
case HSSFCell.CELL_TYPE_ERROR: {
value = String.valueOf(cell.getErrorCellValue());
break;
}
default:
break;
}
}
return value;
}
}总结:
以上就是POI导入导出的相关代码,亲测可用!
POI导出excel文件样式的更多相关文章
- java POI导出Excel文件数据库的数据
在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作.这里我简单实现导出Excel文件. POI jar ...
- 使用POI导出Excel文件
创建表头信息 表头信息用于自动生成表头结构及排序 public class ExcelHeader implements Comparable<ExcelHeader>{ /** * ex ...
- 简单的poi导出excel文件
/**** 创建excel文件**/ 1 import java.io.FileOutputStream; import java.io.IOException; import java.util.C ...
- poi导出excel文件(桃)
1.基本可以通用的工具类 package com.idcsol.apps.common.excel; import java.io.IOException; import java.io.Output ...
- java poi 导出Excel文件
1,导包 poi-3.9-XXX.JAR 2, 创建一个实体对象 public class Student implements Serializable { /** * */ private st ...
- POI导出Excel和InputStream存储为文件
POI导出Excel和InputStream存储为文件 本文需要说明的两个问题 InputStream如何保存到某个文件夹下 POI生成Excel POI操作utils类 代码如下.主要步骤如下: ...
- java使用POI操作excel文件,实现批量导出,和导入
一.POI的定义 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作Exc ...
- POI导出大量数据的简单解决方案(附源码)-Java-POI导出大量数据,导出Excel文件,压缩ZIP(转载自iteye.com)
说明:我的电脑 2.0CPU 2G内存 能够十秒钟导出 20W 条数据 ,12.8M的excel内容压缩后2.68M 我们知道在POI导出Excel时,数据量大了,很容易导致内存溢出.由于Excel ...
- Java POI导出Excel不弹框选择下载路径(下载文件不选择下载路径,默认) Chrome
在Chrome浏览器中,Java导出Excel文件时,浏览器弹出提示框,需要选择下载路径 在Chrome中的高级设置中,把“下载前询问每个文件的保存位置”去掉就解决了 DEEPLOVE(LC)
随机推荐
- 【转】多线程Core Data
原文地址:http://www.cocoanetics.com/2012/07/multi-context-coredata/ Multi-Context CoreData When you star ...
- 分享个Cognos8.4安装介质的百度云网盘链接
https://pan.baidu.com/share/link?shareid=3750687613&uk=3441846946#list/path=%2F
- P1081 开车旅行
题目描述 小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1 到 N 编号,且编号较小的 城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 i 的海拔高度为 Hi,城市 ...
- ajax上传表单的俩种方式
1.用h5对象上传表单(图片) var formData = new FormData(); formData.append("authenticity_token", '1212 ...
- Python中获取异常(try Exception)信息
异常信息的获取对于程序的调试非常重要,可以有助于快速定位有错误程序语句的位置. 这里获取异常(Exception)信息采用try...except...程序结构.如下所示: try: ... exce ...
- 并发编程(四)------并发quene
在并发队列上JDK提供了两套实现,一个是以ConcurrentLinkedQueue为代表的高性能队列,一个是以BlockingQueue接口为代表的阻塞队列,无论哪种都继承自Queue接口! Con ...
- 安装 jdk
1.打开url选择jdk1.8下载http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ...
- 【Linux资源管理】iotop命令监控磁盘使用情况
一.iotop工具介绍 I/O可谓是数据库\服务器的最大瓶颈问题了,在使用top.nmon.zabbix.sar等工具监控I/O时,要么没有I/O监控(如top.zabbix),要么仅仅监控到磁盘层面 ...
- win7在安装时跳过输入用户名界面,直接开启管理员用户
WIN7原版系统安装完后需要创建用户,为了追求纯净简化不必要的步骤,可以选择跳过创建用户直接启用内置管理员账户.首先,到了创建用户这一步先别急着往下点,此时按键盘的SHIFT + F10 组合键调出命 ...
- iOS笔记,开发经验总结【持续更新】
1. 设置navigationBar 背景颜色有色差, 原因:如果单纯的设置背景颜色也是有高斯模糊处理的效果,对纯色高斯模糊处理过后相当于纯色的70%(猜测)透明化处理,但是反正就是有色差 解决方法一 ...