一. Apache POI 简介( http://poi.apache.org/)
使用Java程序读写Microsoft Office,提供了下面这几种类型:
HSSF-提供读写Microsoft Excel XLS格式档案的功能。
XSSF-提供读写Microsoft Excel OOXML XLSX格式档案的功能。
HWPF-提供读写Microsoft Word DOC格式档案的功能。
HSLF- 供读写Microsoft PowerPoint格式档案的功能。
HDGF-提供读Microsoft Visio格式档案的功能。
HPBF-提供读Microsoft Publisher格式档案的功能。
二、POI操作Excel
1. 官方快速帮助:http://poi.apache.org/spreadsheet/quick-guide.html
2. HSSF导入包:poi-3.10-FINAL.jar
XSSF 导入包 poi-ooxml-3.10-FINAL.jar,使用maven会自动导入poi-ooxml-schema
example 包: poi-examples-3.10-FINAL.jar
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.10-FINAL</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.10-FINAL</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-examples</artifactId> <version>3.10-FINAL</version> </dependency>
参考:
1. http://www.blogjava.net/vwpolo/archive/2009/09/16/295243.html
2. http://hacker-zxf.iteye.com/blog/746546
3. http://zmx.iteye.com/blog/622536
4. http://canfly2010.iteye.com/blog/701726
package excel.poi; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Date; import java.util.Iterator; import org.apache.poi.POITextExtractor; import org.apache.poi.extractor.ExtractorFactory; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFDataFormat; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.openxml4j.exceptions.OpenXML4JException; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFCellStyle; import org.apache.poi.xssf.usermodel.XSSFCreationHelper; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.xmlbeans.XmlException; public class ReadExcel { /** * 读取office 2003 xls * @param filePath */ @SuppressWarnings({ "unchecked", "deprecation" }) public void loadXls(String filePath){ try { InputStream input = new FileInputStream("D:\\资料\\文档一期\\xls\\082010 凤鸣轩书单.xls"); POIFSFileSystem fs = new POIFSFileSystem(input); HSSFWorkbook wb = new HSSFWorkbook(fs); HSSFSheet sheet = wb.getSheetAt(0); // Iterate over each row in the sheet Iterator rows = sheet.rowIterator(); while (rows.hasNext()) { HSSFRow row = (HSSFRow) rows.next(); System.out.println("Row #" + row.getRowNum()); // Iterate over each cell in the row and print out the cell"s // content Iterator cells = row.cellIterator(); while (cells.hasNext()) { HSSFCell cell = (HSSFCell) cells.next(); System.out.println("Cell #" + cell.getCellNum()); switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_NUMERIC: System.out.println(cell.getNumericCellValue()); break; case HSSFCell.CELL_TYPE_STRING: System.out.println(cell.getStringCellValue()); break; case HSSFCell.CELL_TYPE_BOOLEAN: System.out.println(cell.getBooleanCellValue()); break; case HSSFCell.CELL_TYPE_FORMULA: System.out.println(cell.getCellFormula()); break; default: System.out.println("unsuported sell type"); break; } } } } catch (IOException ex) { ex.printStackTrace(); } } /** * 读取xlsx文本 * @param filePath */ public void loadXlsxText(String filePath){ File inputFile = new File("D:\\test.xlsx"); try { POITextExtractor extractor = ExtractorFactory.createExtractor(inputFile); System.out.println(extractor.getText()); } catch (InvalidFormatException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (OpenXML4JException e) { e.printStackTrace(); } catch (XmlException e) { e.printStackTrace(); } } /** * 读取office 2007 xlsx * @param filePath */ public void loadXlsx(String filePath){ // 构造 XSSFWorkbook 对象,strPath 传入文件路径 XSSFWorkbook xwb = null; try { xwb = new XSSFWorkbook("D:\\text.xlsx"); } catch (IOException e) { System.out.println("读取文件出错"); e.printStackTrace(); } // 读取第一章表格内容 XSSFSheet sheet = xwb.getSheetAt(0); // 定义 row、cell XSSFRow row; String cell; // 循环输出表格中的内容 for (int i = sheet.getFirstRowNum()+1; i < sheet.getPhysicalNumberOfRows(); i++) { row = sheet.getRow(i); for (int j = row.getFirstCellNum(); j < row.getPhysicalNumberOfCells(); j++) { // 通过 row.getCell(j).toString() 获取单元格内容, if (j==1&&i!=0) { cell = row.getCell(j).getDateCellValue().toLocaleString(); }else { cell = row.getCell(j).toString(); } /* //获取字体和背景颜色 String rgbShort=row.getCell(j).getCellStyle().getFont().getCTFont().getColorArray()[0].xmlText(); rgbShort=ReadExcel.substringBetween(rgbShort, "rgb=\"","\"/>"); String rgbShort=row.getCell(j).getCellStyle().getFillBackgroundXSSFColor().getCTColor().toString(); Color color=new Color(Color.BLUE.getRGB()); System.out.print(cell +",index:"+rgbShort+" red:"+color.getRed()+" blue:"+color.getBlue()+"\t"); */ System.out.print(cell +"\t"); } System.out.println(""); } } /** * HSSF 写入excel xls 格式 * @param filePath * @throws IOException */ public void writeXls(String filePath)throws IOException{ //工作簿 23. HSSFWorkbook hssfworkbook=new HSSFWorkbook(); //创建sheet页 25. HSSFSheet hssfsheet=hssfworkbook.createSheet(); //sheet名称 hssfworkbook.setSheetName(0,"研发部门"); //取得第一行 29. HSSFRow hssfrow=hssfsheet.createRow(0); //创建第一个单元格并处理乱码 31. HSSFCell hssfcell_0=hssfrow.createCell((short)0); //hssfcell_0.setEncoding(HSSFWorkbook.ENCODING_UTF_16); //对第一个单元格赋值 34. hssfcell_0.setCellValue("研发工程师1"); //日期单元格格式处理 HSSFCellStyle hssfcellstyle=hssfworkbook.createCellStyle(); //m/d/yyh:mm 39. hssfcellstyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy")); //创建第二个单元格 41. HSSFCell hssfcell_1=hssfrow.createCell((short)1); hssfcell_1.setCellValue(new Date()); hssfcell_1.setCellStyle(hssfcellstyle); hssfrow.createCell((short)2).setCellValue(true); hssfrow.createCell((short)3).setCellValue(122.00); //输出 49. FileOutputStream fileoutputstream=new FileOutputStream("d:\\exceltext.xls"); hssfworkbook.write(fileoutputstream); fileoutputstream.close(); } @SuppressWarnings("static-access") public void writeXlsx(String filePath)throws IOException{ //工作簿 XSSFWorkbook hssfworkbook=new XSSFWorkbook(); //获得CreationHelper对象,这个应该是一个帮助类 XSSFCreationHelper helper=hssfworkbook.getCreationHelper(); //创建sheet页 XSSFSheet hssfsheet=hssfworkbook.createSheet(); //设置sheet名称 hssfworkbook.setSheetName(0,"我的测试sheet"); //取得第一行 XSSFRow firstRow=hssfsheet.createRow(0); //创建第一个单元格 XSSFCell hssfcell_0=firstRow.createCell(0); //hssfcell_0.setEncoding(HSSFWorkbook.ENCODING_UTF_16);并处理乱码 //对第一个单元格赋值 hssfcell_0.setCellValue("名称"); //创建第二个单元格 XSSFCell hssfcell_1=firstRow.createCell(1); hssfcell_1.setCellValue("创建日期"); //日期单元格格式处理 XSSFCellStyle dateCellStyle=hssfworkbook.createCellStyle(); //m/d/yyh:mm 设置日期格式 dateCellStyle.setDataFormat(helper.createDataFormat().getFormat("yyyy-MM-dd hh:mm:ss")); dateCellStyle=ReadExcel.setFillBackgroundColors(dateCellStyle, IndexedColors.BLACK.getIndex(), IndexedColors.YELLOW.getIndex(), dateCellStyle.SOLID_FOREGROUND); //设置其他标题 firstRow.createCell(2).setCellValue("用户"); firstRow.createCell(3).setCellValue("备注"); //写入所有内容行 for (int rowInt = 1; rowInt < 10; rowInt++) { XSSFRow row =hssfsheet.createRow(rowInt); XSSFCell cell_0=row.createCell(0); cell_0.setCellValue("刘伯恩"); XSSFCell cell_1=row.createCell(1); cell_1.setCellValue(new Date()); cell_1.setCellStyle(dateCellStyle); XSSFCell cell_2=row.createCell(2); cell_2.setCellValue("超级会员"); XSSFCell cell_3=row.createCell(3); cell_3.setCellValue("这里是备注信息"); } //输出 49. FileOutputStream fileoutputstream=new FileOutputStream("d:\\exceltext.xlsx"); hssfworkbook.write(fileoutputstream); fileoutputstream.close(); } /** * 前景和背景填充的着色 * @param cellStyle * @param bg IndexedColors.ORANGE.getIndex(); * @param fg IndexedColors.ORANGE.getIndex(); * @param fp CellStyle.SOLID_FOREGROUND * @return */ public static XSSFCellStyle setFillBackgroundColors(XSSFCellStyle cellStyle,short bg,short fg,short fp){ cellStyle.setFillBackgroundColor(bg); cellStyle.setFillForegroundColor(fg); cellStyle.setFillPattern(fp); return cellStyle; } public static void main(String[] args) { ReadExcel readExcel =new ReadExcel(); /* try { readExcel.writeXlsx(""); } catch (IOException e) { e.printStackTrace(); }*/ readExcel.loadXls(""); } }
xls写入图片
public static void main(String[] args) { FileOutputStream fileOut = null; BufferedImage bufferImg = null; BufferedImage bufferImg1 = null; try { // 先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); ByteArrayOutputStream byteArrayOut1 = new ByteArrayOutputStream(); bufferImg = ImageIO.read(new File("C:/tmp/img/test.jpg")); bufferImg1 = ImageIO.read(new File("C:/tmp/img/test2.jpg")); ImageIO.write(bufferImg, "jpg", byteArrayOut); ImageIO.write(bufferImg1, "jpg", byteArrayOut1); // 创建一个工作薄 HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet1 = wb.createSheet("new sheet"); // HSSFRow row = sheet1.createRow(2); HSSFPatriarch patriarch = sheet1.createDrawingPatriarch(); HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 512, 255,(short) 0, 0, (short) 10, 10); HSSFClientAnchor anchor1 = new HSSFClientAnchor(0, 0, 512, 255,(short) 2, 2, (short) 2, 3); anchor1.setAnchorType(2); // 插入图片 patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor1, wb.addPicture(byteArrayOut1.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); fileOut = new FileOutputStream("C:/tmp/img/test2.xls"); // 写入excel文件 wb.write(fileOut); fileOut.close(); } catch (IOException io) { io.printStackTrace(); System.out.println("io erorr : " + io.getMessage()); } finally { if (fileOut != null) { try { fileOut.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
相关推荐
Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 ...在本文中,我们已经详细介绍了如何使用 Java POI 实现 Excel 导入导出功能,包括读取和写入 Excel 文件。
java读写Excel,POI.JAR,Word内容读取
java读取excel 表格数据。 public static void main(String[] args) { String[][] content=POIExcelUtils.read("E:\\1.xlsx"); for(int i=0;i;i++) { if(content[i]!=null){ for(int j=0;j[i].length;j...
这个简单的例子展示了如何读取Excel文件的基本操作,但实际应用中可能需要处理更复杂的情况,比如单元格的格式、公式、超链接等。此外,jxl库只支持Excel的旧版本(.xls),对于新的.xlsx格式,你可能需要使用Apache...
总的来说,Apache POI 提供了强大的功能,使得 Java 开发者能够轻松地读取、写入和操作 Excel 文件,从而在数据处理方面提高效率。通过熟练掌握 Apache POI,你可以实现各种复杂的 Excel 处理需求。
本教程将重点讲解如何使用Apache POI库来读取Excel数据,并基于这些数据批量生成Word文档。Apache POI是一个开源项目,它允许Java开发者处理Microsoft Office格式的文件,如Excel(.xlsx或.xls)和Word(.docx)。 ...
在Java开发中,POI库被广泛用于生成、修改和读取Excel文档。本篇将深入探讨如何利用Apache POI来操作Excel模板,以及如何读取数据并将其填充到新生成的文件中,最终提供下载。 首先,你需要在项目中引入Apache POI...
在Java中,它允许开发者创建、修改和读取Excel工作簿、工作表以及单元格的数据。POI库不仅支持基本的文本和数字操作,还支持更高级的功能,如公式计算、样式设置和图表创建。 2. **创建Excel图表** 要生成Excel图表...
Apache POI是一个开源项目,提供了丰富的API,使得Java开发者能够轻松地与MS Office格式交互,包括XLS(Excel 97-2003)和XLSX(Excel 2007及以后的版本)。 标题中的"java通过poi操作excel jar包"指的是使用Apache...
在Java中,POI库提供了读取和写入Excel文件的强大功能,包括对2003(.xls)和2007及以上版本(.xlsx)的支持。下面我们将详细讲解如何使用POI进行Excel文件的读取和创建。 1. **安装POI库** 要使用POI,首先需要将...
为了读取Excel文件,我们需要引入Apache POI的依赖库。如果你使用Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org.apache.poi <artifactId>poi-ooxml <version>4.1.2 ``` 或者,如果你的项目不...
以下将详细介绍如何使用Java来读取Excel文件,同时兼容2003和2007版。 1. Apache POI 库 Apache POI 是一个开源项目,它为Microsoft Office格式提供了一个强大的API。对于Excel文件,POI提供了HSSF(Horrible ...
Java中的Apache POI库是一个强大的工具,用于读取和写入Microsoft Office格式的文件,特别是Excel的XLS和XLSX格式。在这个5.2.1版本中,POI提供了对Excel电子表格的强大支持,包括读取数据、修改内容、创建新工作簿...
Java 使用Apache POI库操作Excel 2007文件详解 在Java开发中,处理Excel文件是一项常见的任务,特别是对于数据分析、数据导入导出或报表生成等场景。Apache POI是一个流行的开源库,它允许开发者读写Microsoft ...
### Java读取Excel POI方法详解 #### 一、POI简介及背景 Apache POI 是一个用于处理 Microsoft Office 格式文件的开源库,它提供了读取、写入和修改这些文件的功能。POI 项目中最常用的部分是 HSSF 和 XSSF,分别...
Java 读取 Excel 文件是许多开发任务中的常见需求,Apache POI 是一个广泛使用的开源库,专门用于处理 Microsoft Office 格式的文件,包括 Excel。在本案例中,提供的压缩包 "poi.zip" 包含了两个子文件:poi-bin-...
在这个"利用POI解析excel并存入数据库demo"中,我们将关注如何使用 POI 库来读取 Excel 文件,并将数据有效地存入 MySQL 数据库。 首先,要开始使用 POI,你需要在你的项目中引入相应的依赖。如果你使用的是 Maven...
Apache POI是一个强大的Java库,专门用于处理...通过lib.rar和Poi02.rar中的示例代码,你可以更深入地了解和学习POI操作Excel的具体实现。在实践中,结合这些资源,你将能够熟练地在Java Web项目中集成Excel处理功能。
要实现"利用POI读取excel写入到word",我们需要以下步骤: 1. **准备环境**:首先,确保你的项目已经引入了Apache POI的依赖。在给定的压缩包中,"poi - 副本"可能是包含POI库的JAR文件,你需要将其添加到你的项目...