java写excel
来源:互联网 发布:windows桌面通知软件 编辑:程序博客网 时间:2024/05/04 19:08
废话不说,直接上代码
package com.pzoom.xiaochen.excel;import java.io.OutputStream;import java.util.ArrayList;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFCellStyle;import org.apache.poi.hssf.usermodel.HSSFFont;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;public class ExcelFileGenerator { private final int SPLIT_COUNT = 15; //Excel每个工作表的行数 private ArrayList fieldName = null; //excel数据的抬头栏,即名称栏 private ArrayList fieldData = null; //excel导出的实际数据 private HSSFWorkbook workBook = null;//一个excel文件 //有参构造器,限定了使用此类时,必须首先构建好两个list参数,并将所需数据放入上述两个list。 //其中fieldName这个list可以使用泛型约束List<String> //fieldData这个可以使用泛型约束List<List<Object>> public ExcelFileGenerator(ArrayList fieldName, ArrayList fieldData) { this.fieldName = fieldName; this.fieldData = fieldData; } /** * @return HSSFWorkbook */ public HSSFWorkbook createWorkbook() { workBook = new HSSFWorkbook();//创建一个工作簿 int rows = fieldData.size();//清点出输入数据的行数 int sheetNum = 0;//将工作表个数清零 //根据数据的行数与每个工作表所能容纳的行数,求出需要创建工作表的个数 if (rows % SPLIT_COUNT == 0) { sheetNum = rows / SPLIT_COUNT; } else { sheetNum = rows / SPLIT_COUNT + 1; } for (int i = 1; i <= sheetNum; i++) { HSSFSheet sheet = workBook.createSheet("Page " + i);//创建工作表 HSSFRow headRow = sheet.createRow(0); //创建第一栏,抬头栏 for (int j = 0; j < fieldName.size(); j++) { HSSFCell cell = headRow.createCell(j);//创建抬头栏单元格 //设置单元格格式 cell.setCellType(HSSFCell.CELL_TYPE_STRING); sheet.setColumnWidth(j, 6000); HSSFCellStyle style = workBook.createCellStyle(); HSSFFont font = workBook.createFont(); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); short color = HSSFColor.RED.index; font.setColor(color); style.setFont(font); //将数据填入单元格 if(fieldName.get(j) != null){ cell.setCellStyle(style); cell.setCellValue((String) fieldName.get(j)); }else{ cell.setCellStyle(style); cell.setCellValue("-"); } } //创建数据栏单元格并填入数据 for (int k = 0; k < (rows < SPLIT_COUNT ? rows : SPLIT_COUNT); k++) { if (((i - 1) * SPLIT_COUNT + k) >= rows) break; HSSFRow row = sheet.createRow(k + 1); ArrayList rowList = (ArrayList) fieldData.get((i - 1) * SPLIT_COUNT + k); for (int n = 0; n < rowList.size(); n++) { HSSFCell cell = row.createCell( n); if(rowList.get(n) != null){ cell.setCellValue((String) rowList.get(n).toString()); }else{ cell.setCellValue(""); } } } } return workBook; } //将信息写入输出流的方法。 public void exportExcel(OutputStream os) throws Exception { workBook = createWorkbook(); workBook.write(os); os.close(); }}
测试类在下面
@Test public void testExcel() throws Exception {// ExcelFileGenerator generator = new ExcelFileGenerator(new ArrayList<String>("1,2,3"),new ArrayList<String>("aa","bb","cc"),); ExcelFileGenerator generator = new ExcelFileGenerator(Lists.newArrayList("1","2","3"), Lists.newArrayList(Lists.newArrayList("aa","bb","cc"), Lists.newArrayList("dd","ee","ff"))); generator.exportExcel(new FileOutputStream(new File("a.xls"))); }
我用的guava库里的东西
- Java 写文件 写excel
- java 写EXCEL文件
- java 写excel
- java写excel
- JAVA写Excel文件
- Java 写Excel文件
- java写excel文件
- JAVA使用jxl写excel
- java 统计JXL 写Excel
- JAVA读、写EXCEL文件
- Java读、写、修改Excel文件
- 让你读、写Excel !-java篇
- Java读、写、修改Excel文件
- java 操作 excel 读与写
- Java读取数据库写excel文档
- java对Excel的写操作
- java写excel的一个类
- Java 写rtf(word) excel文件
- 选择与等待
- 真心相爱要做的20件事
- 看透这9个爱情故事,你需要多久?
- 老公和老婆的潜规则
- 又一次的无声回应
- java写excel
- 男人是什么?
- 人生的35个好习惯(转)
- 真正爱你的男孩(女孩必看)转
- 做人之十大戒律
- 遭遇美国教育
- Java文件操作大全
- javascript入门系列演示·三种弹出对话框的用法实例
- 详解H.264之帧内预测