public static void writeExcel(String excelPath, String testCase) throws Exception { /** * create Excel file in excelPath build two sheet which names are "TestSummary" and testcase * detailinfo */ FileOutputStream fos = new FileOutputStream(excelPath); HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet s1 = wb.createSheet(); wb.setSheetName(0, "TestSummary"); HSSFSheet s2 = wb.createSheet(); wb.setSheetName(1, testCase + "_DetailInfo"); HSSFRow s1row = s1.createRow(0); HSSFRow s2row = s2.createRow(0); s1row.createCell(0).setCellValue("Total TCs"); s1row.createCell(1).setCellValue("Run TCs"); s1row.createCell(2).setCellValue("Passed TCs"); s1row.createCell(3).setCellValue("Failure TCs"); s1row.createCell(4).setCellValue("NoRun TCs"); s2row.createCell(0).setCellValue("SubTestCase"); s2row.createCell(1).setCellValue("TestResult"); s2row.createCell(2).setCellValue("AssertPointCheck"); s2row.createCell(3).setCellValue("ScreenShot"); s2row.createCell(4).setCellValue("Processor"); wb.write(fos); fos.close(); }
public void createExcelFile(String filename) throws Exception { out = new FileOutputStream(filename); wb = new HSSFWorkbook(); ws = this.wb.createSheet(); cs1 = this.wb.createCellStyle(); cs2 = this.wb.createCellStyle(); cs3 = this.wb.createCellStyle(); df = this.wb.createDataFormat(); f1 = this.wb.createFont(); f2 = this.wb.createFont(); f1.setFontHeightInPoints((short) 10); f1.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); f2.setFontHeightInPoints((short) 13); f2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); f2.setColor(HSSFFont.COLOR_RED); cs1.setFont(f1); cs1.setDataFormat(df.getFormat("text")); cs2.setFont(f2); cs2.setDataFormat(HSSFDataFormat.getBuiltinFormat("text")); cs3.setFont(f1); cs3.setDataFormat(df.getFormat("#,##0.0")); wb.setSheetName(0, "QryDetail", HSSFWorkbook.ENCODING_UTF_16); }
public void beforeBody(TableModel model) { logger.debug("XlsView.init()"); moneyFormat = model .getPreferences() .getPreference(PreferencesConstants.TABLE_EXPORTABLE + "format.money"); if (StringUtils.isEmpty(moneyFormat)) { moneyFormat = DEFAULT_MONEY_FORMAT; } percentFormat = model .getPreferences() .getPreference(PreferencesConstants.TABLE_EXPORTABLE + "format.percent"); if (StringUtils.isEmpty(percentFormat)) { percentFormat = DEFAULT_PERCENT_FORMAT; } wb = new HSSFWorkbook(); sheet = wb.createSheet(); wb.setSheetName(0, "Export Workbook"); styles = initStyles(wb); ps = sheet.getPrintSetup(); sheet.setAutobreaks(true); ps.setFitHeight((short) 1); ps.setFitWidth((short) 1); createHeader(model); }
/** * 生成文件 * * @throws IOException */ public byte[] run() throws IOException { // 初始化参数 initParameter(); // 实例化decorator initDecorator(); // 初始化 HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); sheet.setDefaultColumnWidth((short) 20); // 设置默认宽度 try { wb.setSheetName(0, sheetName, HSSFWorkbook.ENCODING_UTF_16); } catch (Exception ex) { logger.error("生成表单时出错:怀疑是表单名导致。说明:poi对中文的支持不好,可能会有问题(仅表单名)如中文?--中文字加英文标点的情况"); } baseCellStyle = wb.createCellStyle(); baseCellStyle.setAlignment(align); baseCellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("text")); dateCellStyle = wb.createCellStyle(); dateCellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat(dateFormat)); // 创建标题行 HSSFRow row = sheet.createRow((short) 0); // 创建标题 for (int i = 0; i < nameList.size(); i++) { HSSFCell cell = row.createCell((short) i); writeCell(cell, (String) nameList.get(i)); } // 创建数据 for (int i = 0; i < dataList.size(); i++) { row = sheet.createRow((short) i + 1); for (int j = 0; j < fieldList.size(); j++) { HSSFCell cell = row.createCell((short) j); Object value = getValue(dataList.get(i), (String) fieldList.get(j)); writeCell(cell, value); } } // 写入文件 // FileOutputStream fileOut = new FileOutputStream(fileName); ByteArrayOutputStream out = new ByteArrayOutputStream(); wb.write(out); return out.toByteArray(); // fileOut.close(); }
/** * ファイル情報をExcelへ出力する * * @param outputFilePath 出力ファイルパス */ public void makeXls(String outputFilePath) { FileOutputStream out = null; try { // 新規ワークブックを作成する HSSFWorkbook wb = new HSSFWorkbook(); out = new FileOutputStream(outputFilePath); // 新規ワークシートを作成する HSSFSheet sheet = wb.createSheet(); // 作成したシート名を変更 // 日本語シート名を指定する場合には // エンコーディング設定は必須 wb.setSheetName(0, "sheet1"); // 行オブジェクトの作成(行番号は0スタート) HSSFRow header = sheet.createRow(0); // セルオブジェクトの作成(セル番号は0スタート) // 引数はshort型でキャストしなければならない点に注意 HSSFCell cell1 = header.createCell(0); HSSFCell cell2 = header.createCell(1); HSSFCell cell3 = header.createCell(2); // セルに値を設定する cell1.setCellValue("テストクラス"); cell2.setCellValue("テストメソッド"); cell3.setCellValue("シート名"); for (int i = 1; i < fileInfoList.size(); i++) { EmulFileSheetInfo fileInfo = fileInfoList.get(i); HSSFRow dataRow = sheet.createRow(i); HSSFCell c_class = dataRow.createCell(0); HSSFCell c_method = dataRow.createCell(1); HSSFCell c_sheet = dataRow.createCell(2); c_class.setCellValue(fileInfo.getClassName()); c_method.setCellValue(fileInfo.getMethodName()); c_sheet.setCellValue(toCsv(fileInfo.getSheetNameList())); } // 作成したワークブックを保存する wb.write(out); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } finally { try { if (out != null) { out.close(); } } catch (IOException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } } }
/** * 在服务端生成Excel文件 * * @param sourcedata * @param sheetName * @param fileName * @param path * @param otherParams */ public void createExcel( List sourcedata, String sheetName, String fileName, String path, String otherParams) { String xmlData = ""; long rownum = 0; int colnum = 0; String xml = ""; String filterrow = ""; String rows = ""; // 总行数,客户端分页时使用 int gridType = 0; // 列表类型 int listKind = 0; // 列表性质 int isOperater = 0; // 是否有操作列 int isTotalRow = 0; // 是否有统计行 String tcolname = ""; // 统计列的列名 int isStatusCol = 0; // 是否有行状态列 String colVal; String tmp1[] = null; String tmp2[] = null; String tmp3[] = null; String tmp4[] = null; String[] colName = null; // 列名 int[] isToalcol = null; // 对应的列是否进行合计 double[] colTotal = null; // 对应的列的合计值 List outXml = new ArrayList(); long srdrows = sourcedata.size(); System.out.println("导出数据到excel文件时查询的记录条数:" + (srdrows - 1)); if (srdrows < 2) { return; } try { /*分析客户端提交的综合参数信息 *如:gridType^3@@@listKind^101@@@isOperater^1@@@isTotalRow^1@@@goodsid^0,,goodsname^0,goodstype^0,goodsunit^0,,prodarea^0,,sutotal^1,,lastsudate^0 */ if (otherParams != null) { tmp1 = otherParams.split("@@@"); for (int m = 0; m < tmp1.length; m++) { tmp2 = tmp1[m].split("\\^"); if (m < (tmp1.length - 1)) { if (tmp2[0].equalsIgnoreCase("gridType")) { if (tmp2[1] == null || tmp2[1] == "") { gridType = 0; System.out.println("不能没有列表类型!"); return; } else { gridType = Integer.valueOf(tmp2[1]).intValue(); } } else if (tmp2[0].equalsIgnoreCase("listKind")) { if (tmp2[1] == null || tmp2[1] == "") { listKind = 0; System.out.println("不能没有列表性质!"); return; } else { listKind = Integer.valueOf(tmp2[1]).intValue(); } } else if (tmp2[0].equalsIgnoreCase("isOperater")) { if (tmp2[1] == null || tmp2[1] == "") { isOperater = 0; } else { isOperater = Integer.valueOf(tmp2[1]).intValue(); } } else if (tmp2[0].equalsIgnoreCase("isTotalRow")) { if (tmp2[1] == null || tmp2[1] == "") { isTotalRow = 0; } else { isTotalRow = Integer.valueOf(tmp2[1]).intValue(); } } else if (tmp2[0].equalsIgnoreCase("isStatusCol")) { if (tmp2[1] == null || tmp2[1] == "") { isStatusCol = 0; } else { isStatusCol = Integer.valueOf(tmp2[1]).intValue(); } } } else { tmp3 = tmp1[m].split(","); // 初始化数组 colName = new String[tmp3.length]; isToalcol = new int[tmp3.length]; colTotal = new double[tmp3.length]; for (int n = 0; n < tmp3.length; n++) { tmp4 = tmp3[n].split("\\^"); colName[n] = tmp4[0]; if (tmp4[1] == null) { System.out.println("判断列是否进行合计时出错了!"); return; } isToalcol[n] = Integer.valueOf(tmp4[1]).intValue(); } } } } tmp4 = null; // 创建新的Excel 工作簿 HSSFWorkbook workbook = new HSSFWorkbook(); // 创建工作簿字体 HSSFFont font = workbook.createFont(); // 设置字体颜色为 ,粗体 font.setColor(HSSFFont.COLOR_NORMAL); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 新建指定名称的工作表 HSSFSheet sheet = workbook.createSheet(); // 设置工作表的名称,字符集 workbook.setSheetName(0, sheetName, HSSFWorkbook.ENCODING_UTF_16); // 创建单元格格式 HSSFCellStyle cellstyle = workbook.createCellStyle(); // 定义全部单元格字体样式 cellstyle.setFont(font); for (int i = 0; i < sourcedata.size(); i++) { if (i == sourcedata.size() - 1) { // 总数据行数,不参与数据的导出 Map map = (Map) sourcedata.get(i); Set keys = map.keySet(); for (Iterator iter = keys.iterator(); iter.hasNext(); ) { String key = (String) iter.next(); rows = map.get(key).toString(); } continue; } Map map = (LinkedHashMap) sourcedata.get(i); Set keys = map.keySet(); // 记录行号 rownum++; colnum = 0; // 在索引i的位置创建行 HSSFRow row = sheet.createRow((short) i); // 增加各列的列值 for (Iterator iter = keys.iterator(); iter.hasNext(); ) { String key = (String) iter.next(); tmp4 = key.split("\\."); tcolname = tmp4[1]; // 进行指定列的列值的合计 if (isTotalRow == 1) { for (int w = 0; w < colName.length; w++) { if (tcolname.equalsIgnoreCase(colName[w]) && isToalcol[w] == 1) { colTotal[w] = Double.valueOf(map.get(key).toString()).doubleValue() + colTotal[w]; } } } // 列值 colVal = (String) map.get(key).toString(); // 去掉左右的空格 colVal = colVal.trim(); // 替换回车 colVal = colVal.replaceAll("[\\n\\r]*", ""); // 在索引0的位置创建单元格 HSSFCell cell = row.createCell((short) colnum); /* //创建单元格格式 HSSFCellStyle cellstyle = workbook.createCellStyle(); //定义全部单元格字体样式 cellstyle.setFont(font); */ // 应用单元格格式 cell.setCellStyle(cellstyle); cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setEncoding(HSSFCell.ENCODING_UTF_16); // 第一个单元格中的值 cell.setCellValue(colVal); // 记录列数 colnum++; } } // 将Excel文件存盘 FileOutputStream fileOut = new FileOutputStream(path + fileName); workbook.write(fileOut); fileOut.flush(); // 导出结束,关闭输出流 fileOut.close(); } catch (Exception ex) { System.out.println("系统生成EXCEL发生异常" + ex.getMessage()); ex.printStackTrace(); } }