Java將資料按列寫入Excel並設定格式(字型、背景色、自動列寬、對齊方式等)
阿新 • • 發佈:2018-12-12
本文使用jxl.jar工具類庫將資料按列寫入Excel並設定格式(字型、背景色、自動列寬、對齊方式等)。
/** * 按列寫入Excel並設定格式 * * @param outputUrl * 輸出路徑 * @param sheetName * 工作薄名稱 * @param titles * 表頭 * @param arrayList * 表頭資料 * @throws IOException * @throws RowsExceededException * @throws WriteException */ public static void writeExcel(String outputUrl, String sheetName, String[] titlesArray, ArrayList<String>... arrayList) throws IOException, RowsExceededException, WriteException { if (outputUrl == null || outputUrl.length() == 0) { System.out.println( "Param(s) Error:outputUrl is required and the length of outputUrl is required greater than 0."); return; } int n = arrayList.length; if (titlesArray.length != n) { System.out.println("Param(s) Error:the titles' length is hoped to be equal to arrayList's length."); return; } //建立Excel檔案 File file = new File(outputUrl); file.createNewFile(); //建立工作簿 WritableWorkbook workbook = Workbook.createWorkbook(file); //建立sheet,設定名稱為sheetName,預設Sheet1 if (sheetName == null || sheetName.length() == 0) { sheetName = "Sheet1"; } WritableSheet sheet = workbook.createSheet(sheetName, 0); //設定titles String[] titles = titlesArray; //設定表頭:列名和各種格式 for (int i = 0; i < titles.length; i++) { WritableFont font = new WritableFont(WritableFont.ARIAL, 10, WritableFont.BOLD); CellView cellView = new CellView(); cellView.setAutosize(true); //設定自動大小 sheet.setColumnView(i, cellView); //根據內容自動設定列寬 WritableCellFormat format = new WritableCellFormat(font); format.setAlignment(Alignment.CENTRE); //居中對齊 format.setBackground(Colour.YELLOW); //背景色 format.setBorder(Border.ALL, BorderLineStyle.THICK, Colour.BLACK);//邊框 Label label = new Label(i, 0, titles[i], format); sheet.addCell(label); } //寫入資料,並設定一些格式 for (int i = 0; i < n; i++) { for (int j = 0; j < arrayList[i].size(); j++) { /* * WritableFont.createFont("宋體"):設定字型為宋體 * 10:設定字型大小 * WritableFont.BOLD:設定字型加粗(BOLD:加粗 NO_BOLD:不加粗) * false:設定非斜體 * UnderlineStyle.NO_UNDERLINE:沒有下劃線 */ WritableFont font = new WritableFont(WritableFont.createFont("宋體"), 10, WritableFont.NO_BOLD); WritableCellFormat format = new WritableCellFormat(font); Label label = new Label(i, j + 1, arrayList[i].get(j), format); sheet.addCell(label); } } //寫入資料 workbook.write(); //關閉工作簿 workbook.close(); }
測試程式碼:
public static void main(String[] args) throws Exception { String txtUrl = "C:\\Users\\Administrator\\Desktop\\匹配.txt"; ArrayList<String> list1 = ExcelReadUtil.readBookName(txtUrl); ArrayList<String> list2 = ExcelReadUtil.readFilePath(txtUrl); String[] titles = { "書名", "路徑" }; writeExcel("C:\\Users\\Administrator\\Desktop\\匹配.xls", "匹配", titles, list1, list2); }
測試結果: