1,Word文件转TXT文件
这里是用了一个apache的poi工具,可以在http://poi.apache.org/下载它的jar包,将poi-3.1-FINAL-20080629.jar,poi-contrib-3.1-FINAL-20080629.jar,poi-scratchpad-3.1-FINAL-20080629.jar三个文件复制到工程的WEB-INF/lib目录下。
解析的代码如下:
/*** 将Word文件转换成txt文本文件* @author annlee* * @param fis,源文件的文件输入流* @param outputPath,输出文件的路径,这里指文件夹的路径* @param outputFileName,输出文件的文件名,包括文件后缀名* @return 转换成功返回字符串"OK";转换失败返回失败原因.*/public static String convertWordToTxt(FileInputStream fis, String outputPath, String outputFileName) { try { WordExtractor extractor = new WordExtractor(fis); String str = extractor.getText().trim(); // 获取Word文件中的字符
String outputFile = outputPath + outputFileName + ".txt"; // 组装输出TXT文件的绝对路径
FileOutputStream fos = new FileOutputStream(outputFile); fos.write(str.getBytes()); fos.close(); } catch (FileNotFoundException e) { return "文件不存在!"; } catch (IOException e) { return "文件读写错误!"; } return "OK";}
2,PDF文件转TXT文件
这里是用了一个PDFBox工具,可以在http://www.netlikon.de/docs/PDFBox-0.7.2/lib/下载它的jar包,将PDFBox-0.7.2-log4j.jar,PDFBox-0.7.2.jar这两个文件复制到工程的WEB-INF/lib目录下。
这里多说一下,如果要通过程序生成PDF文件,有个工具很好用:iText是一个能够快速产生PDF文件的java类库。iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的。它的类库尤其与java Servlet有很好的给合。使用iText与PDF能够使你正确的控制Servlet的输出。
解析的代码如下:
/*** 将PDF文件转换成txt文本文件* @author annlee* * @param fis,源文件的文件输入流* @param outputPath,输出文件的路径,这里指文件夹的路径* @param outputFileName,输出文件的文件名,包括文件后缀名* @return 转换成功返回字符串"OK";转换失败返回失败原因.*/public static String convertPdfToTxt(FileInputStream fis, String outputPath, String outputFileName) {
// 是否排序 boolean sort = false;
// 开始提取页数 int startPage = 1; // 结束提取页数 int endPage = Integer.MAX_VALUE;
try { // 内存中存储的PDF Document PDDocument document = PDDocument.load(fis);
String outputFile = outputPath + outputFileName + ".txt"; // 组装输出TXT文件的绝对路径
FileOutputStream fos = new FileOutputStream(outputFile);
OutputStreamWriter writer = new OutputStreamWriter(fos);
// PDFTextStripper来提取文本 PDFTextStripper stripper = new PDFTextStripper(); // 设置是否排序 stripper.setSortByPosition(sort); // 设置起始页 stripper.setStartPage(startPage); // 设置结束页 stripper.setEndPage(endPage); // 调用PDFTextStripper的writeText提取并输出文本 stripper.writeText(document, writer);
fos.close(); writer.close(); } catch (FileNotFoundException e) { return "文件不存在!"; } catch (IOException e) { return "文件读写错误!"; } return "OK";}
3,PPT文件转TXT文件
这里也用的是apache的poi工具,解析的代码如下:
/*** 将PPT文件转换成txt文本文件* * @author annlee* * @param fis,源文件的文件输入流* @param outputPath,输出文件的路径,这里指文件夹的路径* @param outputFileName,输出文件的文件名,包括文件后缀名* @return 转换成功返回字符串"OK";转换失败返回失败原因.*/public static String convertPptToTxt(FileInputStream fis, String outputPath, String outputFileName) { StringBuffer content = new StringBuffer(); try { SlideShow ss = new SlideShow(new HSLFSlideShow(fis));// 建立SlideShow Slide[] slides = ss.getSlides();// 获得每一张幻灯片 for (int i = 0; i < slides.length; i++) { TextRun[] t = slides[i].getTextRuns();// 为了取得幻灯片的文字内容,建立TextRun for (int j = 0; j < t.length; j++) { content.append(t[j].getText());// 这里会将文字内容加到content中去 } content.append(slides[i].getTitle()); //这里会将标题加到content中去 } String outputFile = outputPath + outputFileName + ".txt"; // 组装输出TXT文件的绝对路径
FileOutputStream fos = new FileOutputStream(outputFile); fos.write(content.toString().getBytes()); fos.close(); } catch (FileNotFoundException e) { return "文件不存在!"; } catch (IOException e) { return "文件读写错误!"; } return "OK";}
3,EXCEL文件转TXT文件
这里也用的是apache的poi工具,解析的代码如下:
/*** 将EXCEL文件转换成txt文本文件* * @author annlee* * @param fis,源文件的文件输入流* @param outputPath,输出文件的路径,这里指文件夹的路径* @param outputFileName,输出文件的文件名,包括文件后缀名* @return 转换成功返回字符串"OK";转换失败返回失败原因.*/public static String convertXlsToTxt(FileInputStream fis, String outputPath, String outputFileName) {
StringBuffer content = new StringBuffer(); try { HSSFWorkbook workbook = new HSSFWorkbook(fis);// 创建对Excel工作簿文件的引用 for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) { if (null != workbook.getSheetAt(numSheets)) { HSSFSheet aSheet = workbook.getSheetAt(numSheets);// 获得一个sheet for (int rowNumOfSheet = 0; rowNumOfSheet <= aSheet .getLastRowNum(); rowNumOfSheet++) { if (null != aSheet.getRow(rowNumOfSheet)) { HSSFRow aRow = aSheet.getRow(rowNumOfSheet); // 获得一个行 for (short cellNumOfRow = 0; cellNumOfRow <= aRow .getLastCellNum(); cellNumOfRow++) { if (null != aRow.getCell(cellNumOfRow)) { HSSFCell aCell = aRow.getCell(cellNumOfRow);// 获得列值 if (aCell.getCellType() == 1) { content.append(aCell .getStringCellValue()); } else if (aCell.getCellType() == 0) { content.append(Double.toString(aCell .getNumericCellValue()) + ","); } } } } } } } String outputFile = outputPath + outputFileName + ".txt"; // 组装输出TXT文件的绝对路径
FileOutputStream fos = new FileOutputStream(outputFile); fos.write(content.toString().getBytes()); fos.close(); } catch (FileNotFoundException e) { return "文件不存在!"; } catch (IOException e) { return "文件读写错误!"; } return "OK";}
这里生成的TXT文件中可能包含着一些另类的字符,我们可以在写文件之前将这些字符去掉:
/*** 去掉字符串中多余的字符*/public static String washString(String str){ byte[] buffer = str.getBytes(); byte[] buffernew = new byte[buffer.length]; int j = 0; for(int i =0 ; i< buffer.length; i++){ if((buffer[i] >=20 )||(buffer[i] < 0 )) { buffernew[j++] = buffer[i]; } } String newStr = new String(buffernew); newStr = newStr.replaceAll("FORMTEXT", ""); return newStr.trim(); }