很多時候,一個軟件應用程序需要生成Microsoft Excel文件格式的報告。有時,一個應用程序甚至希望將Excel文件作為輸入數據。例如,一個公司開發的應用程序將財務部門需要所有輸出生成自己的Excel。
任何Java程序員願意將MS Office文件的輸出,可以使用預定義和只讀API來做到。
什么是Apache POI?
Apache POI是一種流行的API,它允許程序員使用Java程序創建,修改和顯示MS Office文件。這由Apache軟件基金會開發使用Java分布式設計或修改Microsoft Office文件的開源庫。它包含類和方法對用戶輸入數據或文件到MS Office文檔進行解碼。
Apache POI組件
Apache POI包含類和方法,來將MS Office所有OLE 2文檔復合。此API組件的列表如下。
-
POIFS (較差混淆技術實現文件系統) : 此組件是所有其他POI元件的基本因素。它被用來明確地讀取不同的文件。
-
HSSF (可怕的電子表格格式) : 它被用來讀取和寫入MS-Excel文件的xls格式。
-
XSSF (XML格式) : 它是用於MS-Excel中XLSX文件格式。
-
HPSF (可怕的屬性設置格式) : 它用來提取MS-Office文件屬性設置。
-
HWPF (可怕的字處理器格式) : 它是用來讀取和寫入MS-Word的文檔擴展名的文件。
-
XWPF (XML字處理器格式) : 它是用來讀取和寫入MS-Word的docx擴展名的文件。
-
HSLF (可怕的幻燈片版式格式) : 它是用於讀取,創建和編輯PowerPoint演示文稿。
-
HDGF (可怕的圖表格式) : 它包含類和方法為MS-Visio的二進制文件。
-
HPBF (可怕的出版商格式) : 它被用來讀取和寫入MS-Publisher文件。
接下來主要介紹HSSF組件的使用,直接上代(gan)碼(huo)
一、常用設置
// 生成Excel表格
HSSFWorkbook workBook = new HSSFWorkbook();
//新建sheet
HSSFSheet sheet = workBook.createSheet();
//設置列寬度自適應,i為列的序號,從零開始
for (int i = 0; i < colId; i++) {
sheet.autoSizeColumn(i, true);
}
// 定義樣式
HSSFCellStyle contentStyle = workBook.createCellStyle();
HSSFFont contentFont = workBook.createFont(); // 定義字體
contentFont.setFontName("微軟雅黑");//設置字體
contentFont.setFontHeightInPoints((short) 10);//設置字號
contentFont.setBold(true);//設置加粗
contentFont.setColor(HSSFColor.WHITE.index);//設置字體顏色
contentStyle.setFont(contentFont);
contentStyle.setAlignment(HorizontalAlignment.CENTER);//左右居中
contentStyle.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中
HSSFCellStyle contentStyleTemp = workBook.createCellStyle();
contentStyleTemp.cloneStyleFrom(contentStyle);//克隆樣式
contentStyleTemp.setFillForegroundColor(HSSFColor.HSSFColorPredefined.ROYAL_BLUE.getColor().getIndex());//背景色設置
二、自定義顏色
HSSFPalette 提供了兩種方式來自定義顏色:
1, 修改已經存在的顏色對象的RGB值
代碼如下,將ORANGE的顏色值修改為(255,204,153)
HSSFPalette customPalette = workbook.getCustomPalette();
customPalette.setColorAtIndex(HSSFColor.ORANGE.index, (byte) 255, (byte) 204, (byte) 153);
在修改后,再設置顏色為ORANGE時,將使用修改后的顏色值.
2, 通過RGB值添加一個顏色(有一定的限制)
代碼如下, 添加一個顏色(153,204,255),返回一個HSSFColor對象.
HSSFPalette customPalette = workbook.getCustomPalette();
HSSFColor newColor = customPalette.addColor((byte) 153, (byte) 204, (byte) 255);
這樣就得到新的顏色對象newColor,可使用之. (第2種方法的限制是在 使用時必須要有newColor對象的引用才行,而第1種方式則沒這限制)