POI 生成 Excel , 记录之
公司最近弄报表系统, 考虑到现在大部分都使用了2007及以上版本的office ,因此选定了poi .不过为了生成兼容2007以前版本, 还是做了一些处理. (根据后缀选择生成的office 版本)
以下是我写的工具类(已简化)
import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hwpf.HWPFDocument; 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.IndexedColors; 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.ss.util.CellRangeAddress; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFRun; import org.apache.poi.xwpf.usermodel.XWPFTable; import org.apache.poi.xwpf.usermodel.XWPFTableCell; import org.apache.poi.xwpf.usermodel.XWPFTableRow; import com.cr.mode.action.ut.FileUploadAction; public class POIExportUtil { public static enum ExcelType{XLS, XLSX}; /** * 生成Excel * * @param data 数据行 * @return */ @SuppressWarnings("rawtypes") public static Workbook generExcel(ExcelType type,final List<Map> data) { Workbook workbook; // 创建新的Excel工作薄 if(type.compareTo(ExcelType.XLS)==0){//2003版 workbook=new HSSFWorkbook(); }else{ workbook=new XSSFWorkbook();//默认2007版 } Sheet sheet = workbook.createSheet(); // 冻结窗格(从列A到行2) sheet.createFreezePane(0, 2); sheet.setDefaultColumnWidth(15); // 设置默认宽度 Row row = null; row = sheet.createRow(0); //创建首行 row.setHeightInPoints(18); //设置行高 sheet.addMergedRegion(new CellRangeAddress(0, 0, 0,3)); //合并单元格 Cell cell_top = row.createCell(0); cell_top.setCellValue("title"); //设置标题 CellStyle topStyle = workbook.createCellStyle(); //样式 topStyle.setAlignment(CellStyle.ALIGN_CENTER);// 设置居中 Font font = workbook.createFont();// 设置字体 font.setColor(IndexedColors.AQUA.getIndex()); //字体颜色 font.setBoldweight(Font.BOLDWEIGHT_BOLD); //字重 font.setFontHeightInPoints((short) 11); //字体大小 topStyle.setFont(font); // 应用样式 cell_top.setCellStyle(topStyle); // 在索引1的位置建行 row = sheet.createRow(1); //表头样式 CellStyle hstyle = workbook.createCellStyle(); hstyle.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex());//设置背景色 hstyle.setFillPattern(CellStyle.SOLID_FOREGROUND); //颜色填充模式 hstyle.setBorderBottom(CellStyle.BORDER_THIN);//设置底线 row.setRowStyle(hstyle); Cell c=row.createCell(0); c.setCellStyle(hstyle); //应用样式 c.setCellValue("ABCK"); if (data != null) { //map中的key List<String> dataKeys=new ArrayList<String>(data.get(0).keySet()); for (int i = 0; i < data.size(); i++) { // 创建行 row = sheet.createRow(i + 2); // 得到行数据 Map row_data = data.get(i); for (int n = 0; n < row_data.size(); n++) { Cell cell = row.createCell(n); Object cValue = row_data.get(dataKeys.get(n)); if (cValue != null && cValue instanceof java.lang.Number) { cell.setCellValue(Double.valueOf(cValue.toString())); } else if (cValue == null) { // cell.setCellValue(0); } else { cell.setCellValue(String.valueOf(cValue)); } } } } return workbook; } public static void main(String[] args) { try { Map m=new HashMap<String, Object>(); m.put("c_createtime", "2014-5-9"); List<Map> data=new ArrayList<Map>(); data.add(m); Workbook book=POIExportUtil.generExcel(ExcelType.XLS, data); book.write(new FileOutputStream(new File("d:/test.xls"))); System.out.println("生成结束"); } catch (IOException e) { e.printStackTrace(); } } }
相关推荐
POI 创建 xls 或 xlsx 格式excel所需要的所有jar, 包括简化文件操作的FileUtils类所在的包
POI-header-复杂头部格式文件,POI-header-复杂头部格式文件
java写的可读取xls和xlsx文件生成html表格,有改动还不成熟希望大家点评支持
xlwrite 允许轻松生成“.xls”和“.xlsx”文件,而无需安装 Excel 或使用 COM 对象。 它使用 Apache POI java 库生成 Excel 文件。 这样可以在任何支持 Java 的平台上生成 Excel 文件,包括 Linux 和 mac。 xlwrite...
用poi根据模板导出excel的帮助类,支持xls和xlsx两种格式,支持上万数据导出不会内存移除,代码有注释。
看到现在网上excel转pdf的代码很少,在csdn上找到一个还不能用,只能做简单的转换,只好自己写了一个,代码是一个maven工程,用eclipse创建,支持单元格合并等复杂的excel,同时能同步单元格样式到pdf中。...
poi3.10以后版本,支持xls以及xlsx格式转为html,希望对大家有用.
本压缩包内为,Java处理Excel文档需要POI依赖的完整jar包,包括生成后缀名为xlsx和xls!
支持生成xls和xlsx文件 流利的语法 重构友好 易于阅读 支持级联样式(为项目定义默认样式,为单个报告自定义) 在生产中使用了2年以上 支持总计的简单公式 不容忍null,而是使用 例子 简单的 subtlelib的最简单...
java生成excel,所需要的jar包集合,包括xls,xlsx两种模式的jar,还的xmlbean包,poi等各个版本
POI所有最新jar包 已经运行过,没有问题 支持解析excel,xlsx,xls 支持解析,生成,word 我是做java方式生成word,用的3.10版本 不同版本的使用规则有所区别
根据Excel模板生成Java JPA实体,使用POI读取Excel【支持2003(xls)、2007(xlsx)】。
基于poi和自定义注解自己写的一个小小的excel生成和解析工具 实现的功能有: list到xls或xlsx的导出 xls或xlsx到list的解析 还有一个父子表的导出 具体使用请看里面的Test.java中的main方法 纯分享,不要分
POI海量数据⼤数据⽂件⽣成 海量数据⼤数据⽂件⽣成SXSSFWorkbook使⽤简介 使⽤简介 在之前我们知道处理xls的excel⽤的workbook是HSSFWorkbook,处理xlsx的excel⽤的是XSSFWorkbook。 上⾯两个类导出excel的时候数据...
有时候我们客户需求需要将Excel文件转成图片推送给客户,由于Excel貌似不能直接转成图片,该工具包实现思路为先将Excel转成pdf,再由PDF转成图片。内附效果图,jar包,代码
它支持读取XLS和XLSX文件,后者还具有(实验性)流支持。 PoiItemReader具有最多的功能,但同时也是最耗费内存的,并且可能导致大型XLS(X)工作表出现内存问题。 为了减少内存占用,可以使用...
POI所有jar包 已经运行过,没有问题 支持解析excel,xlsx,xls 支持解析,生成,word
You can define up to 4000 styles in a .xls workbook is a wrong excepiton 将抛异常的方法去掉,是程序继续执行,生成excel 。本来想免费,但是苦于没积分所以要了5分 见谅 。实在没积分的话可以给我发邮件,给...
neoHort5:基于Java PDF&XLS运行时生成器的iText(v.5。*)和JExcelAPI库。基于Xml的输入源,带有集成的WebJava环境对象(beans ec)包括动态标签的结构:周期,条件,ec支持iText 5. *演示...
X)上生成xls(x)文件。 xlwrite使用相同的语法为xlswrite ,使其易于集成和现有应用程序交换。 如何 演示1 下载或克隆此存储库: git clone https://github.com/adezegher/xlwrite.git 打开Matlab并导航到包含该...