利用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。
来自:http://blog.csdn.net/liuhe688/article/details/4899825