导航:首页 > 文件教程 > poi解析excel文件

poi解析excel文件

发布时间:2023-04-26 05:35:09

A. 如何提高poi读写excel文件(同一文件)的效率

我的代码
//导入普通客户信息

publicStringimportExcle(){

TEmployeeemployee=(TEmployee)request.getSession().getAttribute(

"employee");

TCustomerInfoc=newTCustomerInfo();

//声明数据流

InputStreamis=null;

if(employee!=null){

inthang=0;

intlie=0;

if(excel!=null){

try{

//解析excel2007版本文件

is=newFileInputStream(excel);

XSSFWorkbookwork=newXSSFWorkbook(is);

XSSFSheetsheet=work.getSheetAt(0);

introws=sheet.getPhysicalNumberOfRows();

//循环表的行,从第二行开始


for(inti=1;i<rows;i++){

hang=i+1;

c=newTCustomerInfo();

XSSFRowrow=sheet.getRow(i);

if(row==null){//判断是否为空

continue;

}

//读取该行的每一列

for(intj=0;j<row.getPhysicalNumberOfCells();j++){

XSSFCellcell=row.getCell(j);

if(cell==null){

continue;

}

if(cell.toString()==null

||"".equals(cell.toString())){

continue;

}

Stringv=Util.getXssfCellValue(cell);

switch(j){//通过列数来判断对应插如的字段

case0:

c.setCompanyName(v);

break;

case1:

c.setLinkName(v);

break;

case2:

c.setTell(v);

break;

case3:

c.setTelephone(v);

break;

case4:

c.setPosition(v);

break;

case5:

c.setEmail(v);

break;

case6:

c.setCompanyType(v);

break;

case7:

c.setCustomerType(v);

break;

case8:

c.setCompanyDetail(v);

break;

}

c.setCreateMan(employee.getName());

c.setCreateDate(newDate());


}

customerInfoBiz.addCustomer(c);

}

request.setAttribute("message","导入成功(=^_^=)");


}catch(Exceptione){

System.out.println("进入---解析excel2003版本文件--错误抛出");

try{

//解析excel2003版本文件


is=newFileInputStream(excel);

HSSFWorkbookwork=newHSSFWorkbook(is);

HSSFSheetsheet=work.getSheetAt(0);

if(sheet!=null){

introws=sheet.getPhysicalNumberOfRows();

//循环表的行,从第二行开始

for(inti=1;i<rows;i++){

hang=i+1;

c=newTCustomerInfo();

HSSFRowrow=sheet.getRow(i);

if(row==null){//判断是否为空

continue;

}

//循环表格的列

for(shortj=0;j<row

.getPhysicalNumberOfCells();j++){

HSSFCellcell=row.getCell(j);

if(cell==null){

continue;

}

if(cell.toString()==null||"".equals(cell.toString())){

continue;

}

Stringv=Util.getHssfCellValue(cell);

switch(j){//通过列数来判断对应插如的字段

case0:


c.setCompanyName(v);

break;

case1:


c.setLinkName(v);

break;

case2:


c.setTell(v);

break;

case3:


c.setTelephone(v);

break;

case4:


c.setPosition(v);

break;

case5:


c.setEmail(v);

break;

case6:


c.setCompanyType(v);

break;

case7:


c.setCustomerType(v);

break;

case8:


c.setCompanyDetail(v);

break;

}

c.setCreateMan(v);

c.setCreateDate(newDate());

}

customerInfoBiz.addCustomer(c);

}

request.setAttribute("message","导入成功(=^_^=)");

}

}catch(Exceptione1){

request.setAttribute("message","第"+hang+"行,第"

+lie+"列开始导入失败,请注意导入格式!!");

e1.printStackTrace();

}

}

}

}else{

request.setAttribute("message","登录超时,请重新登录!!");

}

//查询时对象中含有值对查询有误

if(customer!=null){

customer=null;

}


returncustomerList();

}

B. poi解析excel2003和2007有没有办法是用同样的方法实现

Poi解析2003时使用的是HSSFCell,而2007的则是
XSSFCell,是完全不同的两套API
必须先要判断excel的类型,不过 HSSFWorkbook 和 XSSFWorkbook 实现的接口都漏核散是一样的Workbook,直接在实氏正例化接口的时候有点区别其他时候没有任何差异。
比如,刚刚获取excle文件流,先判断excel格式确定用03还是07处理类实例化Workbook接口。
view sourceprint?
01.Workbook workbook = null;
02.if(Constants.ImportExport.EXCEL.equals(fileExtension))
03.{
04.workbook = new HSSFWorkbook(fin);
05.}
06.else
07.{
08.workbook = new XSSFWorkbook(fin);
09.}
获取workbook 后,后续处理Sheet、Row、Cell 统统用接口实现,不用关注返氏03,07差异性。也就是根本不会涉及到 XSSFCell、HSSFCell这些类。
相关类或接口:
view sourceprint?
1.import org.apache.poi.ss.usermodel.Workbook;
2.import org.apache.poi.hssf.usermodel.HSSFWorkbook;
3.import org.apache.poi.xssf.usermodel.XSSFWorkbook;
4.
5.import org.apache.poi.ss.usermodel.Sheet;
6.import org.apache.poi.ss.usermodel.Row;
7.import org.apache.poi.ss.usermodel.Cell;

C. java使用poi解析或处理excel的时候,如何防止数字变成科学计数法的

思路为:为了防止数字变成科学计数法方式表示,在源文件以及java代码中都用文本的方式去生成和袭察解析excel,具体如下:

1.生成Excel时,设置单元格格式为STRING,即:

//关键代码
HSSFCellcell=newHSSFCell();
cell.setCellType(HSSFCell.CELL_TYPE_STRING);

2.同理,解析察脊的时候,首先要保证源excel文件中该单元格格式是文本类型的,然后在java代码里用STRING类型去解败禅渗析:

//关键代码
Stringvalue=cell.getStringCellValue();

D. java poi根据列头解析excel

这个需要你自己写方法. 遍历你毁伏模的表头行每厅森个单元格的数据
对比你传的参数 匹配时 返回 该单元格的列号. 然后再用不同的row去get得到的纤缓列号

E. java 用POI处理比较大的word和excel文档。

java的主要有两种方法
1、使用POI,这样的包,直接的是根据office文件的相应规则,进行解析封装
2、使用jcob这样的,通过调用office的dll文件,操作

第一种优点:
不需要在环境上安装office,纯java环境,开发文档较全,使用方便
缺点:
对于office的某些功能,特性兼容不是很全面,但一般的内容也可以满足

第二种优点:
对于office文件的兼容性良好,和使用word,excel的操作基本上是一样的
缺点:
由于是通过java调用office来完成,所以需要在环境上安装office,文档较少

F. poi解析excel表头不在一行

原因是POI导轿手纯入Excel文件时,读取的数据少了一行。
如果是使用 XSSFSheet 对象来获取行数的话,那获取闭咐行数的方法应该是:
1.XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
2.XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(0);
3.int row = xssfSheet.getPhysicalNumberOfRows();
而不是使用int rows = xssfSheet.getLastRowNum();来获薯蠢得行数。

阅读全文

与poi解析excel文件相关的资料

热点内容
炫酷字体APP下载的文件在哪里 浏览:668
廊坊哪里有少儿编程机构 浏览:312
cad新文件能找回来吗 浏览:951
导出手机qq文件到u盘 浏览:456
电脑如何打开ppt文件怎么打开方式 浏览:782
魅族锁定区文件夹 浏览:357
刻字cnc怎么编程 浏览:182
学校的网络拓扑结构图 浏览:784
收集100个pdf文件里关键词 浏览:594
苹果关闭4g网络设置 浏览:289
如何监测数据库 浏览:967
拷贝过来的pdf文件 浏览:751
抖音小店的访客数据怎么看 浏览:670
怎么把c语言编程的字符向下移动 浏览:786
sql删除文件组代码 浏览:978
安卓post请求多重json 浏览:776
微信消除数据怎么恢复 浏览:918
小米刷机显示系统找不到指定文件 浏览:528
苹果手机小风扇图app叫什么 浏览:292
繁体中文输入工具 浏览:916

友情链接