使用POI解析(txt,doc,docx,xls,xlsx)文件方法总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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){