一、需要用的档案:jakarta-poi-1.8.0-dev-20020917.jar
几乎每天都有1.8.0的最新版(但非正式版),正式的版本是1.5.0
http://jakarta.apache.org/builds/jakarta-poi/nightly/
将档案复制到classpath所指到的地方
二、有兴趣的朋友可以参考
http://jakarta.apache.org/poi/
三、先建立一个叫做book1.xls的Excel档,内容如下
----------------------------------
项目 单价 数量 合计
CPU 7000 5 35000
硬碟 2500 2 5000
记忆体 1600 3 4800
----------------------------------
其中合计的栏位是设定公式,单价*数量
四、资料读取範例
<%@ page contentType="text/html;charset=MS950" import="java.util.*,java.io.*" %>
<%@ page import="org.apache.poi.poifs.filesystem.*,org.apache.poi.hssf.usermodel.*" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=MS950">
<title>读取Excel档案</title>
</head>
<body>
<table border="1" width="100%">
<%
FileInputStream finput = new FileInputStream(application.getRealPath("/")+"book1.xls" );
//设定FileINputStream读取Excel档
POIFSFileSystem fs = new POIFSFileSystem( finput );
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
//读取第一个工作表,宣告其为sheet
finput.close();
HSSFRow row=null;
//宣告一列
HSSFCell cell=null;
//宣告一个储存格
short i=0;
short y=0;
//以巢状迴圈读取所有储存格资料
for (i=0;i<=sheet.getLastRowNum();i++)
{
out.println("<tr>");
row=sheet.getRow(i);
for (y=0;y<row.getLastCellNum();y++)
{
cell=row.getCell(y);
out.print("<td>");
//判断储存格的格式
switch ( cell.getCellType() )
{
case HSSFCell.CELL_TYPE_NUMERIC:
out.print(cell.getNumericCellValue());
//getNumericCellValue()会回传double值,若不希望出现小数点,请自行转型为int
break;
case HSSFCell.CELL_TYPE_STRING:
out.print( cell.getStringCellValue());
break;
case HSSFCell.CELL_TYPE_FORMULA:
out.print(cell.getNumericCellValue());
//读出公式储存格计算後的值
//若要读出公式内容,可用cell.getCellFormula()
break;
default:
out.print( "不明的格式");
break;
}
out.println("</td>");
}
out.println("</tr>");
}
%>
</table>
</body>
</html>
五、资料新增範例
<%@ page contentType="text/html;charset=MS950" import="java.util.*,java.io.*" %>
<%@ page import="org.apache.poi.poifs.filesystem.*,org.apache.poi.hssf.usermodel.*" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=MS950">
<title>插入资料至Excel档案</title>
</head>
<body>
<%
FileInputStream finput = new FileInputStream(application.getRealPath("/")+"book1.xls" );
//设定FileINputStream读取Excel档
POIFSFileSystem fs = new POIFSFileSystem( finput );
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
//读取第一个工作表,宣告其为sheet
finput.close();
HSSFRow row=null;
//宣告一列
HSSFCell cell=null;
//宣告一个储存格
short i=4;
row=sheet.createRow(i);
//建立一个新的列,注意是第五列(列及储存格都是从0起算)
cell=row.createCell((short)0);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
//设定这个储存格的字串要储存双位元
cell.setCellValue("显示卡");
cell=row.createCell((short)1);
cell.setCellValue(1700);
cell=row.createCell((short)2);
cell.setCellValue(8);
cell=row.createCell((short)3);
//设定这个储存格为公式储存格,并输入公式
cell.setCellFormula("B"+(i+1)+"*C"+(i+1));
try
{
FileOutputStream fout=new FileOutputStream(application.getRealPath("/")+"book1.xls");
wb.write(fout);
//储存
fout.close();
out.println("储存成功<a href='book1.xls'>book1.xls</a>");
}
catch(IOException e)
{
out.println("产生错误,错误讯息:"+e.toString());
}
%>
</body>
</html>
六、资料删除、修改範例
<%@ page contentType="text/html;charset=MS950" import="java.util.*,java.io.*" %>
<%@ page import="org.apache.poi.poifs.filesystem.*,org.apache.poi.hssf.usermodel.*" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=MS950">
<title>删除、修改资料至Excel档案</title>
</head>
<body>
<%
FileInputStream finput = new FileInputStream(application.getRealPath("/")+"book1.xls" );
//设定FileINputStream读取Excel档
POIFSFileSystem fs = new POIFSFileSystem( finput );
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
//读取第一个工作表,宣告其为sheet
finput.close();
HSSFRow row=null;
//宣告一列
HSSFCell cell=null;
//宣告一个储存格
row=sheet.getRow((short)4);
//取出第五列
if (row!=null)
sheet.removeRow(row);
//先侦测第五列存不存在,若在的话将第五列删除
row=sheet.getRow((short)3);
//取出第四列
cell=row.getCell((short)2);
//取出第三个储存格
cell.setCellValue(7);
//设定该储存格值为7
cell=row.getCell((short)3);
cell.setCellFormula(cell.getCellFormula());
//上两行为取出公式储存格,并重新计算(因为刚才更新过计算公式的值)
//如果不做,公式计算後的值不会更新
try
{
FileOutputStream fout=new FileOutputStream(application.getRealPath("/")+"book1.xls");
wb.write(fout);
//储存
fout.close();
out.println("储存成功<a href='book1.xls'>book1.xls</a>");
}
catch(IOException e)
{
out.println("产生错误,错误讯息:"+e.toString());
}
%>
</body>
</html>
分享到:
相关推荐
在Java中读写Excel文件 ! 仅供参考
java 读取Excel文件中的内容 java 读取Excel文件中的内容
1、java解析读取excel文件中的数据,并写入数据库。 2、java读取数据库数据,并导出为excel文件。 3、README.md中有详细的操作步骤示例。 使用说明: 1. 先使用postman导入:other/excel相关.postman_collection....
如何利用java来编写读取excel的方法,代码
poi.zip java读取excel文件,其中bin压缩文件中含有jar包,eclipse导入时可直接使用;src压缩文件含有java源代码,需要阅读源码的童鞋可以下载使用
java读写excel文件,新手参考高手绕道。
将excel文件中的内容通过java文件读取出来,包括总行数,列数,单元格内容,合并单元格,行高,列宽,图片等信息。
使用Java读取Excel文件的内容,主要是使用POI框架,可以读取最新的Excel文件xlsx后缀文件,即2007版本之后的。
Java读写文件-Excel
Java读取xls、CSV、xlsx文件所用到的jar包,包括:opencsv-2.3.jar、poi-3.7-20101029.jar、poi-ooxml-3.7-20101029.jar
Java用poi读取excel文件Java用poi读取excel文件Java用poi读取excel文件
完美解决java读取excel内存溢出问题,希望可以帮到大家
java代码读取excel文件,同时兼容2003和2007
JAVA如何读取EXCEL文件.kdh
java读取Excel文件中多个sheet,生成xml格式的文件
java读取xls中的数据,每个对象对应多个属性值,根据每个对象的属性值来生成一个二维矩阵
本案例中利用Apache Poi读取Excel用法,源码注释详细基本用法!
文件中包括读取excel、csv文件,同时可以将读取出的文件内容保存在另外一个excel或csv中。注意excel2003和excel2007调用的jar包也不一样,需要将代码进行修改。2007版的将HSSF改成XSSF,2003相反。csv文件用XSSF
这是一个针对java对Excel的操作应用,能够解决很多类似于报表的这种处理,它是处理的一种思路,当然如果是负责问题还要具体对待。
java读取excel数据导入数据库源码 java读取excel数据导入数据库源码