Apache POI操作xls文件

本文介绍如何利用Java的Apache POI库进行Excel文件的读写操作。具体包括使用POI创建Excel工作簿、设置单元格内容及批注、添加文档摘要信息等步骤,并演示了如何读取已有的Excel文件。

一、获得POI包

wget http://apache.fayea.com/poi/release/bin/poi-bin-3.14.tar.gz

二、解开后导入构建路径

三、测试

package www.zjptcc.wxw.poi;

import org.apache.poi.hpsf.DocumentSummaryInformation;
import org.apache.poi.hpsf.SummaryInformation;
import   org.apache.poi.hssf.usermodel.*;   
import   java.io.FileOutputStream;//   code   run   against   the   jakarta-poi-1.5.0-FINAL-20020506.jar.   
import java.util.Date;
public   class   PoiTestWrite     
{     
    private static HSSFWorkbook wb;

	static   public   void   main(String[]   args)   throws   Exception   
    {     
        FileOutputStream   fos   =   new   FileOutputStream( "./test.xls");     
        wb = new   HSSFWorkbook();     
        HSSFSheet   first_sheet   =   wb.createSheet();   
        wb.setSheetName(0,   "first   sheet ");   
        HSSFRow   row   =   first_sheet.createRow(0);   
        HSSFCell   cell   =   row.createCell(0);   
        cell.setCellValue( "Hello!   This   message   is   generated   from   POI. ");   
        //创建单元格
        HSSFSheet test_sheet = wb.createSheet("Test");// 创建工作表(Sheet)
        row = test_sheet.createRow(0);// 创建行,从0开始
        cell = row.createCell(0);// 创建行的单元格,也是从0开始
        cell.setCellValue("李志伟");// 设置单元格内容
        row.createCell(1).setCellValue(false);// 设置单元格内容,重载
        row.createCell(2).setCellValue(new Date());// 设置单元格内容,重载
        row.createCell(3).setCellValue(12.345);// 设置单元格内容,重载
        
        //创建批注
        HSSFPatriarch patr = test_sheet.createDrawingPatriarch();
        HSSFClientAnchor anchor = patr.createAnchor(0, 0, 0, 0, 5, 1, 8, 3);//创建批注位置
        HSSFComment comment = patr.createCellComment(anchor);//创建批注
        comment.setString(new HSSFRichTextString("这是一个批注段落!"));//设置批注内容
        comment.setAuthor("李志伟");//设置批注作者
        comment.setVisible(true);//设置批注默认显示
        cell = test_sheet.createRow(2).createCell(1);
        cell.setCellValue("测试");
        cell.setCellComment(comment);//把批注赋值给单元格
        
        //创建文档摘要信息
        wb.createInformationProperties();//创建文档信息
        DocumentSummaryInformation dsi= wb.getDocumentSummaryInformation();//摘要信息
        dsi.setCategory("类别:Excel文件");//类别
        dsi.setManager("管理者:李志伟");//管理者
        dsi.setCompany("公司:--");//公司
        SummaryInformation si = wb.getSummaryInformation();//摘要信息
        si.setSubject("主题:--");//主题
        si.setTitle("标题:测试文档");//标题
        si.setAuthor("作者:李志伟");//作者
        si.setComments("备注:POI测试文档");//备注
        
        wb.write(fos);     
        fos.close();     
        System.out.println("xls文件被保存!");

    }   
}    

四、

五、读

package www.zjptcc.wxw.poi;

import   org.apache.poi.poifs.filesystem.*;
import   org.apache.poi.hssf.usermodel.*;   
import   java.io.*;
public   class   PoiTestRead     
{     
    private static HSSFWorkbook wb;

	static   public   void   main(String[]   args)   throws   Exception   
    {     
  
 	POIFSFileSystem fs=new POIFSFileSystem(new FileInputStream("./111.xls"));    
	wb = new HSSFWorkbook(fs);
	HSSFSheet    sheet=wb.getSheetAt(1);	//得到Excel工作表的sheet编号,0开始 
	HSSFRow	  row=sheet.getRow(1);		//得到Excel工作表指定行,参数0开始对应excel表第1行 
	HSSFCell  cell=row.getCell(3);		//得到Excel工作表指定行的单元格(列),参数0开始对应excel表第A列
	String msg = cell.getStringCellValue();	//得到单元格内容

	System.out.println("从当前目录下读取excel文件:111.xls...");
        System.out.print("第二个sheet 2D单元格的内容:");
	System.out.println(msg);

	sheet=wb.getSheetAt(0);
	row=sheet.getRow(0);
	cell=row.getCell(0);
	System.out.print("第一个sheet 1A单元格的内容:");
	System.out.println(cell.getStringCellValue());
    }   
}    

 

转载于:https://my.oschina.net/u/2245781/blog/705946

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值