`
boendev
  • 浏览: 242657 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Java 操作 Excel (读取Excel2003 2007,Poi实现)

阅读更多

一. 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();
				}
			}
		}
	}

 

 

分享到:
评论
1 楼 贝塔ZQ 2016-09-29  
java实现操作excel文件,PageOffice插件可以实现的,支持03,07,10,13等office版本的文件,用起来是很方便的。

相关推荐

    java_poi实现excel导入导出

    Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 ...在本文中,我们已经详细介绍了如何使用 Java POI 实现 Excel 导入导出功能,包括读取和写入 Excel 文件。

    java读写Excel,POI.JAR,Word内容读取

    java读写Excel,POI.JAR,Word内容读取

    java 读取excel表格数据 poi

    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...

    java读取excel简单例子

    这个简单的例子展示了如何读取Excel文件的基本操作,但实际应用中可能需要处理更复杂的情况,比如单元格的格式、公式、超链接等。此外,jxl库只支持Excel的旧版本(.xls),对于新的.xlsx格式,你可能需要使用Apache...

    java使用 poi 读取excel

    总的来说,Apache POI 提供了强大的功能,使得 Java 开发者能够轻松地读取、写入和操作 Excel 文件,从而在数据处理方面提高效率。通过熟练掌握 Apache POI,你可以实现各种复杂的 Excel 处理需求。

    Java通过POI读取Excel遍历数据,批量生成word文档

    本教程将重点讲解如何使用Apache POI库来读取Excel数据,并基于这些数据批量生成Word文档。Apache POI是一个开源项目,它允许Java开发者处理Microsoft Office格式的文件,如Excel(.xlsx或.xls)和Word(.docx)。 ...

    poi 操作excel模板

    在Java开发中,POI库被广泛用于生成、修改和读取Excel文档。本篇将深入探讨如何利用Apache POI来操作Excel模板,以及如何读取数据并将其填充到新生成的文件中,最终提供下载。 首先,你需要在项目中引入Apache POI...

    java的poi生成excel图表demo

    在Java中,它允许开发者创建、修改和读取Excel工作簿、工作表以及单元格的数据。POI库不仅支持基本的文本和数字操作,还支持更高级的功能,如公式计算、样式设置和图表创建。 2. **创建Excel图表** 要生成Excel图表...

    java 通过poi操作excel jar包

    Apache POI是一个开源项目,提供了丰富的API,使得Java开发者能够轻松地与MS Office格式交互,包括XLS(Excel 97-2003)和XLSX(Excel 2007及以后的版本)。 标题中的"java通过poi操作excel jar包"指的是使用Apache...

    JAVA用POI读取和创建2003和2007版本Excel完美示例

    在Java中,POI库提供了读取和写入Excel文件的强大功能,包括对2003(.xls)和2007及以上版本(.xlsx)的支持。下面我们将详细讲解如何使用POI进行Excel文件的读取和创建。 1. **安装POI库** 要使用POI,首先需要将...

    Java读取大数据量Excel的方法(POI)

    为了读取Excel文件,我们需要引入Apache POI的依赖库。如果你使用Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.apache.poi &lt;artifactId&gt;poi-ooxml &lt;version&gt;4.1.2 ``` 或者,如果你的项目不...

    java 读取 Excel 读取 兼容2003,2007

    以下将详细介绍如何使用Java来读取Excel文件,同时兼容2003和2007版。 1. Apache POI 库 Apache POI 是一个开源项目,它为Microsoft Office格式提供了一个强大的API。对于Excel文件,POI提供了HSSF(Horrible ...

    Java实现Excel读写的poi 5.2.1版本jar

    Java中的Apache POI库是一个强大的工具,用于读取和写入Microsoft Office格式的文件,特别是Excel的XLS和XLSX格式。在这个5.2.1版本中,POI提供了对Excel电子表格的强大支持,包括读取数据、修改内容、创建新工作簿...

    java使用POI操作excel (支持excel2007)

    Java 使用Apache POI库操作Excel 2007文件详解 在Java开发中,处理Excel文件是一项常见的任务,特别是对于数据分析、数据导入导出或报表生成等场景。Apache POI是一个流行的开源库,它允许开发者读写Microsoft ...

    java读取excel poi 方法

    ### Java读取Excel POI方法详解 #### 一、POI简介及背景 Apache POI 是一个用于处理 Microsoft Office 格式文件的开源库,它提供了读取、写入和修改这些文件的功能。POI 项目中最常用的部分是 HSSF 和 XSSF,分别...

    poi.zip java读取excel文件

    Java 读取 Excel 文件是许多开发任务中的常见需求,Apache POI 是一个广泛使用的开源库,专门用于处理 Microsoft Office 格式的文件,包括 Excel。在本案例中,提供的压缩包 "poi.zip" 包含了两个子文件:poi-bin-...

    利用POI解析excel并存入数据库demo

    在这个"利用POI解析excel并存入数据库demo"中,我们将关注如何使用 POI 库来读取 Excel 文件,并将数据有效地存入 MySQL 数据库。 首先,要开始使用 POI,你需要在你的项目中引入相应的依赖。如果你使用的是 Maven...

    POI生成Excel POI操作Excel POI读取Excel POI类库

    Apache POI是一个强大的Java库,专门用于处理...通过lib.rar和Poi02.rar中的示例代码,你可以更深入地了解和学习POI操作Excel的具体实现。在实践中,结合这些资源,你将能够熟练地在Java Web项目中集成Excel处理功能。

    利用POI读取excel写入到word

    要实现"利用POI读取excel写入到word",我们需要以下步骤: 1. **准备环境**:首先,确保你的项目已经引入了Apache POI的依赖。在给定的压缩包中,"poi - 副本"可能是包含POI库的JAR文件,你需要将其添加到你的项目...

Global site tag (gtag.js) - Google Analytics