利用poi讀寫excel和word
如果在項目中想把excel數據導入到數據庫中或者將數據庫中的數據導出為excel,POI是個不錯的選擇。Apache POI是Apache軟件基金會的開放源碼函式庫,POI提供API給Java程式對Microsoft Office格式檔案讀和寫的功能。
HSSF - 提供讀寫Microsoft Excel格式檔案的功能。
XSSF - 提供讀寫Microsoft Excel OOXML格式檔案的功能。
HWPF - 提供讀寫Microsoft Word格式檔案的功能。
HSLF - 提供讀寫Microsoft PowerPoint格式檔案的功能。
HDGF - 提供讀寫Microsoft Visio格式檔案的功能。
下面是兩個demo,分別讀寫excel和word:
讀取xls數據:
package poi.xls; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFCell; import java.io.FileInputStream; /** * 利用POI實現從excel中讀取內容 */ public class XLSReader { public static String fileToRead = "c:/test.xls"; public static void main(String args[]) throws Exception{ // 創建對Excel工作簿文件的引用 HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToRead)); //HSSFSheet sheet = workbook.getSheet("第一頁"); HSSFSheet sheet = workbook.getSheetAt(0); //讀取指定索引行的值 HSSFRow row = sheet.getRow(1); //讀取指定索引格的值 HSSFCell id = row.getCell((short) 0); HSSFCell name = row.getCell((short) 1); HSSFCell password = row.getCell((short) 2); //讀出數據 System.out.println("id: " + id.getNumericCellValue()); System.out.println("name: " + name.getRichStringCellValue()); System.out.println("password: " + password.getRichStringCellValue()); } }
創建xls文件:
package poi.xls; import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFRichTextString; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFCell; /** * 利用POI實現向excel中寫入內容 */ public class XLSWriter { public static String fileToWrite = "c:/test.xls"; public static void main(String[] args) throws Exception { // 創建新的Excel 工作簿 HSSFWorkbook workbook = new HSSFWorkbook(); // 在Excel工作簿中建一工作表,其名為缺省值 HSSFSheet sheet = workbook.createSheet("第一頁"); //HSSFSheet sheet = workbook.createSheet(); // 在指定的索引處創建一行 HSSFRow row = sheet.createRow((short) 0); //在指定索引處創建單元格 HSSFCell id = row.createCell((short) 0); // 定義單元格為字符串類型 id.setCellType(HSSFCell.CELL_TYPE_NUMERIC); // 在單元格中輸入一些內容,HSSFRichTextString可以解決亂碼問題 HSSFRichTextString idContent = new HSSFRichTextString("用戶id號"); id.setCellValue(idContent); HSSFCell name = row.createCell((short) 1); name.setCellType(HSSFCell.CELL_TYPE_STRING); HSSFRichTextString nameContent = new HSSFRichTextString("用戶名"); name.setCellValue(nameContent); HSSFCell password = row.createCell((short) 2); password.setCellType(HSSFCell.CELL_TYPE_STRING); HSSFRichTextString passwordContent = new HSSFRichTextString("用戶密碼"); password.setCellValue(passwordContent); // 新建一輸出文件流 FileOutputStream out = new FileOutputStream(fileToWrite); // 把相應的Excel 工作簿存盤 workbook.write(out); out.flush(); // 操作結束,關閉文件 out.close(); System.out.println("文件生成..." + fileToWrite); } }
讀取word內容:
package poi.doc; /** * 利用POI實現從word中讀取內容 */ import java.io.FileInputStream; import org.apache.poi.hwpf.extractor.WordExtractor; public class DOCReader { public static String fileToRead = "c:/test.doc"; public static void main(String[] args) throws Exception{ // 創建輸入流讀取DOC文件 FileInputStream in = new FileInputStream(fileToRead); // 創建WordExtractor WordExtractor extractor = new WordExtractor(in); // 對DOC文件進行提取 String text = extractor.getText(); System.out.println(text); } }
創建word 文件:
package poi.doc; import java.io.ByteArrayInputStream; import java.io.FileOutputStream; import org.apache.poi.poifs.filesystem.POIFSFileSystem; /** * 利用POI實現向word寫入內容 */ public class DOCWriter { public static String fileToWrite = "c:/test.doc"; public static void main(String[] args) throws Exception{ String content = "測試數據,將被寫入文檔"; byte b[] = content.getBytes(); ByteArrayInputStream bais = new ByteArrayInputStream(b); POIFSFileSystem fs = new POIFSFileSystem(); FileOutputStream ostream = new FileOutputStream(fileToWrite); fs.writeFilesystem(ostream); bais.close(); ostream.close(); } }
上面是幾個小示例,要使用更復雜的應用,可以參照POI的API。
本文由用戶 f663x 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!