Java 使用POI操纵Excel 2007
这是两个例程,是演示如何使用Java读取和写入Excel2007文件。注释里有比较详细的开发环境说明,你只要在Eclipse里粘过去不可以运行了。
例程使用的是POI-XSSF,而不是HSSF,这个地方要注意一下,不过他们的用法很类似,如果你看明白一个了,应该很容易理解另一个
非常感谢大家能阅读我的文章。如果还有什么问题,请大家留言
http://www.gjrencai.com/newsShow.asp?dataID=1485
并保留作者姓名和本句话,谢谢合作
/******************************************************************************
*演示使用POI写入Excel2007
*
*关键字:JavaExcelPOIPOI-HSSFPOI-XSSF
*
gjrencai.com
*注释:http://www.gjrencai.com/newsShow.asp?dataID=1485
*开发环境详细说明:
*1、javaversion"1.6.0_14"
*2、Java(TM)SERuntimeEnvironment(build1.6.0_14-b08)
*3、JavaHotSpot(TM)ClientVM(build14.0-b16,mixedmode,sharing)
*4、MicrosoftExcel2007
*5、WindowsXPHomeEditionServicePack3
*6、ApachePOI3.5
*
*****************************************************************************/
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.IOException;
importorg.apache.poi.ss.usermodel.Cell;
importorg.apache.poi.ss.usermodel.CreationHelper;
importorg.apache.poi.ss.usermodel.Row;
importorg.apache.poi.ss.usermodel.Sheet;
importorg.apache.poi.ss.usermodel.Workbook;
importorg.apache.poi.xssf.usermodel.XSSFWorkbook;
publicclassPOIExcelWriteDemo1
{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args)
{
//TODOAuto-generatedmethodstub
try
{
Workbookwb=newXSSFWorkbook();
CreationHelpercreateHelper=wb.getCreationHelper();
Sheetsheet=wb.createSheet("这里是第一页");
//创建行
Rowrow=sheet.createRow((short)0);
//创建单元格,方法1
Cellcell=row.createCell(0);
cell.setCellValue(1);
//直接创建单元格,方法2
row.createCell(1).setCellValue(1.2);
row.createCell(2)
.setCellValue(createHelper.createRichTextString("大家好,我是高宏伟"));
row.createCell(3).setCellValue(
createHelper.createRichTextString("QQ:21807822"));
row.createCell(4).setCellValue(true);
//写入文件
FileOutputStreamfileOut;
fileOut=newFileOutputStream("gaohw.xlsx");
wb.write(fileOut);
fileOut.close();
System.out.println("写入成功,运行结束!");
}catch(FileNotFoundExceptione)
{
e.printStackTrace();
}catch(IOExceptione)
{
e.printStackTrace();
}
}
}
以下是读取Excel文件的例程
/******************************************************************************
*演示使用POI读取Excel2007
*
*关键字:JavaExcelPOIPOI-HSSFPOI-XSSF
*注释:http://www.gjrencai.com/newsShow.asp?dataID=1485*
*开发环境详细说明:
*1、javaversion"1.6.0_14"
*2、Java(TM)SERuntimeEnvironment(build1.6.0_14-b08)
*3、JavaHotSpot(TM)ClientVM(build14.0-b16,mixedmode,sharing)
*4、MicrosoftExcel2007
*5、WindowsXPHomeEditionServicePack3
*6、ApachePOI3.5
*
*****************************************************************************/
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.io.InputStream;
importjava.util.Iterator;
importorg.apache.poi.openxml4j.exceptions.InvalidFormatException;
importorg.apache.poi.ss.usermodel.Cell;
importorg.apache.poi.ss.usermodel.DateUtil;
importorg.apache.poi.ss.usermodel.Row;
importorg.apache.poi.ss.usermodel.Sheet;
importorg.apache.poi.ss.usermodel.Workbook;
importorg.apache.poi.ss.usermodel.WorkbookFactory;
publicclassPOIExcelReadDemo1
{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args)
{
try
{
InputStreaminp;
inp=newFileInputStream("gaohw.xlsx");
Workbookwb=WorkbookFactory.create(inp);
Sheetsheet=wb.getSheetAt(0);
for(Iteratorrit=sheet.rowIterator();rit.hasNext();)
{
//迭代行
Rowrow=(Row)rit.next();
//迭代单元格
for(Iteratorcit=row.cellIterator();cit.hasNext();)
{
Cellcell=(Cell)cit.next();
//开始操作单元格
//在每一行的输出都打印如"5:6例子字符串",5:6代表第5行,第6列
//注意行和列是基于0索引的
System.out.print(cell.getRowIndex()+":"+cell.getColumnIndex()
+"");
//打印单元格内的数据
switch(cell.getCellType())
{
caseCell.CELL_TYPE_STRING:
System.out.println(cell.getRichStringCellValue().getString());
break;
caseCell.CELL_TYPE_NUMERIC:
if(DateUtil.isCellDateFormatted(cell))
{
System.out.println(cell.getDateCellValue());
}else
{
System.out.println(cell.getNumericCellValue());
}
break;
caseCell.CELL_TYPE_BOOLEAN:
System.out.println(cell.getBooleanCellValue());
break;
caseCell.CELL_TYPE_FORMULA:
System.out.println(cell.getCellFormula());
break;
default:
System.out.println();
}
}
}
}catch(FileNotFoundExceptione)
{
e.printStackTrace();
}catch(InvalidFormatExceptione)
{
e.printStackTrace();
}catch(IOExceptione)
{
e.printStackTrace();
}
}
}