- 需求
项目通过前端页面开发了一个类似Excel的编辑控件,模仿Excel的(水平居中、水平居左、水平居右、竖直居中、竖直偏上、竖直偏下、字体类型、字体大小、字体加粗、下划线)等功能,数据保存入库后,最终导出到Excel中。
- 设计
用POI(Apache)、JXL(jExcelAPI)导出Excel是常用的选择,根据需求描述,不能通过设置Excel模板然后动态设置替换值来处理,我选择的是POI框架,在开发的过程中发现POI有两套API HSSF(针对2003-97版本的Excel)文件结尾必须是.xls,XSSF (针对2007~2013版本的Excel)文件结尾必须是.xlsx。
- 创建Excel的方式1
public static void main(String[] args) throws Exception { Workbook wb = new HSSFWorkbook();//(2) Sheet sheet = wb.createSheet("new sheet"); for(int i=0;i<2000;i++){ //(1) getStyle(wb); } CellStyle style = getStyle(wb); CellStyle style2 = getStyle2(wb); for(int i=0;i<1000;i++){ Row row = sheet.createRow(i); for(int j=0;j<100;j++){ Cell cell = row.createCell(j); cell.setCellValue("设计"); if(i>5&&j==19){ cell.setCellStyle(style2); }else{ cell.setCellStyle(style); } } } // Write the output to a file FileOutputStream fileOut = new FileOutputStream("workbook.xls");//(3) wb.write(fileOut); fileOut.close(); } public static CellStyle getStyle(Workbook wb ){ CellStyle style = wb.createCellStyle(); style.setBorderBottom(CellStyle.BORDER_THIN); style.setBorderLeft(CellStyle.BORDER_THIN); style.setBorderRight(CellStyle.BORDER_THIN); style.setBorderTop(CellStyle.BORDER_THIN); return style; }
注意(2)、(3)的内容,当对每一个单元格都设置样式的时候,这种方式(通过HSSFWorkbook创建工作薄,输出.xls 2003版本的Excel文件)时,当wb.createCellStyle创建的样式对象太多时,会导致生成的workbook.xls文件样式丢失,我测试发现(1)处的for循环等于43的时候,输出.xls(即生成2003版本的Excel文件)会丢失单元格的边框样式。
2. 创建Excel 方式2
Workbook wb = new XSSFWorkbook();//(1) ... FileOutputStream fileOut = new FileOutputStream("workbook.xlsx");//(2)
注意(1)、(2)部分的内容,调用这样的API(XSSFWorkbook创建工作薄,输出.xlsx 2007~2013版本的Excel文件),这个时候中间我们创建的【每个单元格样式在应用的时候不会丢失】,只是我们要考虑每个单元格都创建样式的性能。
注:之前一直都被POI Excel cellStyle单元格边框样式的丢失困扰,现在记录下来,以备留用!
- 问题
- HSSFWorkbook创建工作薄,生成.xlsx 结尾的Excel文件 打开文件会弹出错误提示
- 同样XSSFWorkbook创建工作薄,生成.xls 结尾的Excel文件 打开文件也会弹出错误提示
相关推荐
POI操作Excel 合并单元格 边框问题解决方法,这个方法是我亲自测试,并运用于项目中的,可以放心使用,还一并写出了很多注释,其中有写poi的bug的解决方法
Java Poi 导出excel(支持各种设置字体、颜色、垂直居中)
关于java EXCEL poi 合并后无法显示或无法设置边框问题 【本人亲测】 excel poi 新手! 坑了1.5天!
POI报表导出excel文件,POI包为3.6版本。里面导出的方法及设置样、合并单元格,合并多表头均有比较清晰的注释。希望对大家有用。
easyuiPoi 通过模板导出Excel、支持纵向合并单元格(合并重复内容)。压缩包包含公共工具类、示例模板、调用截图。
基于POI+XML配置模板Excel导出,代码简单易用,模板与html类似,配置极易上手。支持单sheet和多sheet导出。支持导出样式及单元格融合,表头融合
通过poi导出数据,可设置多种样式,例如:字体格式,单元格样式,列宽等,附:maven依赖jar。用法简单便于操作。
/* 设置为超链接的样式*/ HSSFCellStyle linkStyle = wb.createCellStyle(); HSSFFont cellFont= wb.createFont(); cellFont.setUnderline((byte) 1); cellFont.setColor(HSSFColor.BLUE.index); ...
这是一个关于poi导出Excel的详细的例子。里面涉及到poi操作Excel的详尽引用,包括设置行的高度、列的宽度、合并单元格、设置单元格的样式等等,一个例子足以掌握poi导出Excel的操作。
简单样式系统,使您可以使用Apache POI CellStyle系统来样式化工作簿,工作表,行或特定单元格 非常轻巧 安装 在您的build.gradle.kts或build.gradle添加以下内容 如果build.gradle.kts repositories { jcenter() ...
#POIDemo ##代码不能停留在看的阶段,...POIDemo8.java 设置工作簿单元格边框样式 利用cellStyle.setBorderXXX POIDemo9.java 单元格合并 POIDemo10.java 字体测试 POIDemo11.java 测试读取与重写单元格 POIDemo12.java
* var dynCondVal = startDate + "," + endDate; var gauge_head1="日期@交易金额汇总@渠道@交易类型";//表头1 要合并的格表头描述字段 已@分割 注意 这里的表头是至第一行表头 var gauge_head2="日期@交易量汇总@...
easyexcel Base on Poi 1、自定义模板可以继承Template类,...4、所有的样式都放在Config类里面,包括行高,列宽,单元格样式等等。 5、目前暂时不支持打印样式,图片插入,超链接等。 工程中自带了example,简单实用
大量不可重复使用的格式控制代码,例如背景色,对齐方式,单元格样式等。实施顾问显然提供了现成的模板,但是不得不开发代码以再次实施它,从而导致开发效率低下。调整模板时必须使用开发资源。简单的导出还需要特定...
此外,还有一些附加功能,例如自定义单元格样式,在导出过程中转换数据,在导入过程中验证数据等。 用章鱼导出复杂的Excel 从Maven导入< dependency> < groupId>...
单元格样式 单元格边框 单元格格式,例如数字格式,日期,百分比等。 公式 计划 目标是支持Luckysheet支持的所有功能 条件格式 数据透视表 图表 种类 筛选 注解 Excel导出 要求 版本> = 6 安装 npm install -g gulp...
20.3 应用POI组件导出到Word 772 第21章 JSP操作Excel 775 21.1 应用JXL组件操作Excel 776 21.2 应用POI组件操作Excel 807 第22章 报表与打印 829 22.1 Web打印 830 22.2 利用Word打印报表 833 22.3 利用Excel打印...
20.3 应用POI组件导出到Word 772 第21章 JSP操作Excel 775 21.1 应用JXL组件操作Excel 776 21.2 应用POI组件操作Excel 807 第22章 报表与打印 829 22.1 Web打印 830 22.2 利用Word打印报表 833 22.3 利用Excel打印...