1. 程式人生 > >Java將資料按列寫入Excel並設定格式(字型、背景色、自動列寬、對齊方式等)

Java將資料按列寫入Excel並設定格式(字型、背景色、自動列寬、對齊方式等)

本文使用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);
    }

測試結果: