开发记录——EXCEL导出
来源:互联网 发布:聊天软件遇见 编辑:程序博客网 时间:2024/05/19 00:50
在java开发中,excel表格的导出可谓是家常便饭,本周的工作中被分配了导出excel,于是便写了一个导出。但后来又提出了对表格有格式的要求,比如背景啊,合并单元格之类的,于是就在网上找了一堆资料慢慢自己研究出来了,觉得挺有记录价值的,所以现在把它记录下来。
这次不废话,直接上代码,因为不是很难的东西所以直接用注释解释
import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFCellStyle;import org.apache.poi.hssf.usermodel.HSSFRichTextString;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.hssf.util.HSSFColor;import org.apache.poi.ss.usermodel.CellStyle;import org.apache.poi.ss.usermodel.IndexedColors;import org.apache.poi.ss.util.CellRangeAddress;public class download{ public static void download(){ try{ //首先是初始化一个excel表格并给入所需要的参数 HSSFWorkbook workbook = new HSSFWorkbook();//产生工作簿对象 HSSFSheet sheet = workbook.createSheet("测试表格");//产生工作表对象括号中则可写入sheet名称(注意sheet名和文件名是两个不同的东西,这部分请了解excel的使用) sheet.setDefaultColumnWidth(17);//设置单元格宽度(Arial字体,10号字下9个中文字符) HSSFCellStyle titleStyle = workbook.createCellStyle();//设置抬头样式 HSSFCellStyle style = workbook.createCellStyle();//其他样式 titleStyle.setFillForegroundColor(IndexedColors.AQUA.getIndex());//设置单元格颜色 titleStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);//使颜色设置生效 titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中设置 titleStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中设置 style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//正文水平居中设置 //初始化行,列,单元格参数,方便后续使用 HSSFRow row = null;//行 HSSFCell cell = null;//列 HSSFRichTextString text = null;//单元格内容 //因为我需要合并单元格作为抬头所以这里写两个合并单元格的样式并插入sheet样式 //初始化两个合并单元格的样式 CellRangeAddress cra = new CellRangeAddress(0, 1, 0, 0);//合并单元格,括号内的参数分别是(起始行数,结束行数,起始列数,结束列数) CellRangeAddress cra2 = new CellRangeAddress(0, 0, 1, 5); //将样式插入进sheet生效 sheet.addMergedRegion(cra); sheet.addMergedRegion(cra2); //抬头 HSSFRow firstRow = sheet.createRow(0);//注意,要在一行内添加多个列,row要提前申明,不然每sheet一次相当于初始化一次,这里是定位需要写入数据的行数,从0开始计数 //标题名 cell = firstRow.createCell(0);//定位行数中的具体列数 cell.setCellStyle(titleStyle);//将写好的样式放入 text = new HSSFRichTextString("标题名");//需要写入的文本数据,注意,这种方法放入的必须是String类型的数据,注意要放入数据的类型转换 cell.setCellValue(text);//将数据放入准备好的单元格 //因为抬头是比较特殊的,所以只能单独一个一个写入 //用户信息 cell = firstRow.createCell(1); cell.setCellStyle(titleStyle); text = new HSSFRichTextString("用户信息"); cell.setCellValue(text); //而像这种比较有规律的标题就可以用for循环写入 List<String> titles = new ArrayList<>(); titles.add("登录名"); titles.add("姓名"); titles.add("部门"); titles.add("完成时间(分钟)"); titles.add("状态"); //注意一定要头脑清晰,确认角标的位置 //其他标题起始列数 int titleNum = 1; HSSFRow sceondRow = sheet.createRow(1); //其他标题 for(String title : titles){ cell = sceondRow.createCell(titleNum++); cell.setCellStyle(titleStyle); text = new HSSFRichTextString(title); cell.setCellValue(text); } //导出excel String fileName = URLEncoder.encode("测试excel", "UTF-8");//这里是导出的文件名和编码格式 response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls"); //这里注意一下,这里的.xls是导出文件的后缀,一般导出的后缀是xls,不要写成xlsx这种07之后的excel格式,会造成文件无法读取的状况,建议最好用这种比较低,通用的格式 workbook.write(response.out); response.out.close(); }catch(Exception e){ throw e; } }}
这样就能导出一个带有格式的excel的表格,下面附上导出的图
下面附上背景颜色的对照数据
style.setFillForegroundColor(IndexedColors.AQUA.getIndex());cell.setCellValue("X1");style.setFillForegroundColor(IndexedColors.AUTOMATIC.getIndex());cell.setCellValue("X2");style.setFillForegroundColor(IndexedColors.BLUE.getIndex());cell.setCellValue("X3");style.setFillForegroundColor(IndexedColors.BLUE_GREY.getIndex());cell.setCellValue("X4");style.setFillForegroundColor(IndexedColors.BRIGHT_GREEN.getIndex());cell.setCellValue("X5");style.setFillForegroundColor(IndexedColors.BROWN.getIndex());cell.setCellValue("X6");style.setFillForegroundColor(IndexedColors.CORAL.getIndex());cell.setCellValue("X7");style.setFillForegroundColor(IndexedColors.CORNFLOWER_BLUE.getIndex());cell.setCellValue("X8");style.setFillForegroundColor(IndexedColors.DARK_BLUE.getIndex());cell.setCellValue("X9");style.setFillForegroundColor(IndexedColors.DARK_GREEN.getIndex());cell.setCellValue("X10");style.setFillForegroundColor(IndexedColors.DARK_RED.getIndex());cell.setCellValue("X11");style.setFillForegroundColor(IndexedColors.DARK_TEAL.getIndex());cell.setCellValue("X12");style.setFillForegroundColor(IndexedColors.DARK_YELLOW.getIndex());cell.setCellValue("X13");style.setFillForegroundColor(IndexedColors.GOLD.getIndex());cell.setCellValue("X14");style.setFillForegroundColor(IndexedColors.GREEN.getIndex());cell.setCellValue("X15");style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());cell.setCellValue("X16");style.setFillForegroundColor(IndexedColors.GREY_40_PERCENT.getIndex());cell.setCellValue("X17");style.setFillForegroundColor(IndexedColors.GREY_50_PERCENT.getIndex());cell.setCellValue("X18");style.setFillForegroundColor(IndexedColors.GREY_80_PERCENT.getIndex());cell.setCellValue("X19");style.setFillForegroundColor(IndexedColors.INDIGO.getIndex());cell.setCellValue("X20");style.setFillForegroundColor(IndexedColors.LAVENDER.getIndex());cell.setCellValue("X21");style.setFillForegroundColor(IndexedColors.LEMON_CHIFFON.getIndex());cell.setCellValue("X22");style.setFillForegroundColor(IndexedColors.LIGHT_BLUE.getIndex());cell.setCellValue("X23");style.setFillForegroundColor(IndexedColors.LEMON_CHIFFON.getIndex());cell.setCellValue("X24");style.setFillForegroundColor(IndexedColors.LIGHT_BLUE.getIndex());cell.setCellValue("X25");style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());cell.setCellValue("X26");style.setFillForegroundColor(IndexedColors.LIGHT_GREEN.getIndex());cell.setCellValue("X27");style.setFillForegroundColor(IndexedColors.LIGHT_ORANGE.getIndex());cell.setCellValue("X28");style.setFillForegroundColor(IndexedColors.LIGHT_TURQUOISE.getIndex());cell.setCellValue("X29");style.setFillForegroundColor(IndexedColors.LIGHT_YELLOW.getIndex());cell.setCellValue("X30");style.setFillForegroundColor(IndexedColors.LIME.getIndex());cell.setCellValue("X31");style.setFillForegroundColor(IndexedColors.MAROON.getIndex());cell.setCellValue("X32");style.setFillForegroundColor(IndexedColors.OLIVE_GREEN.getIndex());cell.setCellValue("X33");style.setFillForegroundColor(IndexedColors.ORANGE.getIndex());cell.setCellValue("X34");style.setFillForegroundColor(IndexedColors.ORCHID.getIndex());cell.setCellValue("X35");style.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex());cell.setCellValue("X36");style.setFillForegroundColor(IndexedColors.PINK.getIndex());cell.setCellValue("X37");style.setFillForegroundColor(IndexedColors.PLUM.getIndex());cell.setCellValue("X38");style.setFillForegroundColor(IndexedColors.RED.getIndex());cell.setCellValue("X39");style.setFillForegroundColor(IndexedColors.ROSE.getIndex());cell.setCellValue("X40");style.setFillForegroundColor(IndexedColors.ROYAL_BLUE.getIndex());cell.setCellValue("X41");style.setFillForegroundColor(IndexedColors.SEA_GREEN.getIndex());cell.setCellValue("X42");style.setFillForegroundColor(IndexedColors.SKY_BLUE.getIndex());cell.setCellValue("X43");style.setFillForegroundColor(IndexedColors.TAN.getIndex());cell.setCellValue("X44");style.setFillForegroundColor(IndexedColors.TEAL.getIndex());cell.setCellValue("X45");style.setFillForegroundColor(IndexedColors.TURQUOISE.getIndex());cell.setCellValue("X46");style.setFillForegroundColor(IndexedColors.VIOLET.getIndex());cell.setCellValue("X47");style.setFillForegroundColor(IndexedColors.WHITE.getIndex());cell.setCellValue("X48");style.setFillForegroundColor(IndexedColors.YELLOW.getIndex());cell.setCellValue("X49");
下面附上参照图
感谢iteye的网友xiaohewoai提供的颜色参照,我截取了重点部分,这里附上原址(http://xiaohewoai.iteye.com/blog/1300817),可供大家参考。
0 0
- 开发记录——EXCEL导出
- 项目开发经验分享—导出Excel
- EXCEL导出—JXL
- EXCEL导出—POI
- java开发导出Excel
- 导出excel方法—用js导出
- java—读取Excel 、导出Excel
- 数据苦查询数据并将记录条数用excel文档导出——poi
- 导出excel——入门
- 工具——excel导出
- Jxl导出excel开发实例
- 将ListView中的记录导出为Excel
- 记录防止忘记poi导出excel
- 将MSHFlexGrid1中记录导出为Excel
- crm2011 更改数据库导出excel记录限制
- 学习记录--Java数据导出到excel
- 日常记录(二)SpringMVC导出Excel
- java数据记录导出到Excel
- 任务3 理解Task
- 如何设计出让人眼前一亮的交互框架?
- 【编程素质】代码注释
- 搭建一个App框架及相应的源码分析(EventBus+RxJava+Rxtrofit+OkHttp+Dagger2)及三方SDK等
- Python--第3天:一大波金融Library来袭之numpy篇
- 开发记录——EXCEL导出
- Spring4 & Swagger2
- Java IO流系列(二)—— 字符流
- Java-代理
- 对/proc/cpuinfo文件下的各个参数的说明及实践
- erlang fsm 学习及用例
- logback logback.xml常用配置详解
- 10个很棒的学习Android 开发的网站
- SpringMVC + security模块 框架整合详解