使用POI解析(txt,doc,docx,xls,xlsx)文件方法总结

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本人最近写了用POI解析txt,doc,docx,xls,xlsx等五个格式的文件,整理一下:

可能写的不是很简单,但是可用。

最近上传文件,解析文件,我天天都在写,写的头都大了。。。

所有整理一下主要的核心的代码,即助人为乐,也给自己留个备份。呵呵

欢迎参考

首先需要引用jar包:

这些jar包网上都是可以找的到的

1、首先要先读取到文件,

String targetDirectory = ServletActionContext.getServletContext().getRealPath("/wenjian");//获取路径

这是获取服务器中wenjian这个文件夹下的所有文件。

//读取指定文件夹下的所有文件名称

File file=new File(targetDirectory);

String test[];

test=file.list();

所有的文件名称都在这个list中,

用循环可以得到文件的后缀名

for(int i=0;i

File f =new File(test[i]);

String fileName=f.getName();

String

prefix=fileName.substring(stIndexOf(".")+1);//获取文件后缀名

FileInputStream fis = new

FileInputStream(targetDirectory+"/"+test[i]);

String fis2 = targetDirectory+"/"+test[i];

不同的文件类型,使用不同的解析方法。

简单的代码如下:

if("doc".equals(prefix)){

WordExtractor wordExtractor;

try {

FileInputStream file = new FileInputStream(path);

wordExtractor = new WordExtractor(file);

String[] paragraph =

wordExtractor.getParagraphText();

for(int j=0;j

ss += paragraph[j].toString();

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if("docx".equals(prefix)){

try {

XWPFDocument xwdoc = new XWPFDocument(POIXMLDocument

.openPackage(path));

POIXMLTextExtractor ex = new XWPFWordExtractor(xwdoc);

ss = ex.getText().trim();

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

}

if("xls".equals(prefix)){

HSSFWorkbook hssfWorkbook = new HSSFWorkbook(fis);

//获得第一个工作表Sheet

HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(0);

//获得第一行Row

HSSFRow hssfRow = hssfSheet.getRow(0);

//用StringBuffer得到Excel表格一行的内容并用逗号分隔

StringBuffer sb = new StringBuffer();

for(int p=0;p

sb.append(getValue(hssfRow.getCell(p)));

int fc = hssfRow.getLastCellNum()-1;

}

if("xlsx".equals(prefix)){

XSSFWorkbook xssfWorkbook = new XSSFWorkbook( fis);

// 循环工作表Sheet

XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(0);

// 循环行Row

XSSFRow xssfRow = xssfSheet.getRow(0);

// 循环列Cell

//用StringBuffer得到Excel表格一行的内容并用逗号分隔

StringBuffer sbs = new StringBuffer();

for(int cellNum = 0; cellNum < xssfRow.getLastCellNum(); cellNum++){ XSSFCell xssfCell = xssfRow.getCell(cellNum);

sbs.append(xssfCell);

int fc = xssfRow.getLastCellNum()-1;

if(cellNum!=fc){

相关文档
最新文档