EXCEL批量转化为TXT-EXCEL转化为TXT-java实现 Excel转txt
2009-05-11 12:49
621 查看
在网上找了个EXCEL转化为TXT的JAVA代码,改了下使得可以批量的转化EXCEL为TXT:
当然,我们这里需要用到三个jar包,可以去http://apache.freelamp.com/poi/release/bin/下载第一个文件名为:poi-bin-3.1-FINAL-20080629.tar.gz 的文件,解压后可以从里面翻出poi-3.1-FINAL-20080629.jar poi-scratchpad-3.1-FINAL-20080629.jar poi-contrib-3.1-FINAL-20080629.jar三个包。添加到你所建工程的库下。(下载后解压如果发现是个没有扩展名的文件,添加扩展名为rar,再解压)
用到的JAVA类如下:
ExcelReader.java
Main.java
当然,我们这里需要用到三个jar包,可以去http://apache.freelamp.com/poi/release/bin/下载第一个文件名为:poi-bin-3.1-FINAL-20080629.tar.gz 的文件,解压后可以从里面翻出poi-3.1-FINAL-20080629.jar poi-scratchpad-3.1-FINAL-20080629.jar poi-contrib-3.1-FINAL-20080629.jar三个包。添加到你所建工程的库下。(下载后解压如果发现是个没有扩展名的文件,添加扩展名为rar,再解压)
用到的JAVA类如下:
ExcelReader.java
package convert; import java.io.*; import java.util.Date; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class ExcelReader { // 创建文件输入流 private BufferedReader reader = null; // 文件类型 private String filetype; // 文件二进制输入流 private InputStream is = null; // 当前的Sheet private int currSheet; // 当前位置 private int currPosition; // Sheet数量 private int numOfSheets; // HSSFWorkbook HSSFWorkbook workbook = null; // 设置Cell之间以空格分割 private static String EXCEL_LINE_DELIMITER = " "; // 设置最大列数 private static int MAX_EXCEL_COLUMNS = 64; // 构造函数创建一个ExcelReader public ExcelReader(String inputfile) throws IOException, Exception { // 判断参数是否为空或没有意义 if (inputfile == null || inputfile.trim().equals("")) { throw new IOException("no input file specified"); } // 取得文件名的后缀名赋值给filetype this.filetype = inputfile.substring(inputfile.lastIndexOf(".") + 1); // 设置开始行为0 currPosition = 0; // 设置当前位置为0 currSheet = 0; // 创建文件输入流 is = new FileInputStream(inputfile); // 判断文件格式 if (filetype.equalsIgnoreCase("xls")) { // 如果是Excel文件则创建HSSFWorkbook读取 workbook = new HSSFWorkbook(is); // 设置Sheet数 numOfSheets = workbook.getNumberOfSheets(); } else { throw new Exception("File Type Not Supported"); } } // 函数readLine读取文件的一行 public String readLine() throws IOException { // 如果是XLS文件则通过POI提供的API读取文件 if (filetype.equalsIgnoreCase("xls")) { // 根据currSheet值获得当前的sheet HSSFSheet sheet = workbook.getSheetAt(currSheet); // 判断当前行是否到但前Sheet的结尾 // System.out.println(sheet.getLastRowNum()); if (currPosition > sheet.getLastRowNum()) { // 当前行位置清零 currPosition = 0; // 判断是否还有Sheet if (currSheet != numOfSheets - 1) { currSheet++; // 得到下一张Sheet sheet = workbook.getSheetAt(currSheet); }else{ return null; } } // 获取当前行数 int row = currPosition; currPosition++; // 读取当前行数据 return getLine(sheet, row); } return null; } // 函数getLine返回Sheet的一行数据 private String getLine(HSSFSheet sheet, int row) { // 根据行数取得Sheet的一行 HSSFRow rowline = sheet.getRow(row); // 创建字符创缓冲区 StringBuffer buffer = new StringBuffer(); // 获取当前行的列数 int filledColumns; try{ filledColumns = rowline.getLastCellNum(); }catch(NullPointerException e){ return "获取行数为空!"; } HSSFCell cell = null; // 循环遍历所有列 for (int i = 0; i < filledColumns; i++) { // 取得当前Cell cell = rowline.getCell((short) i); String cellvalue = null; if (cell != null) { // 判断当前Cell的Type switch (cell.getCellType()) { // 如果当前Cell的Type为NUMERIC case HSSFCell.CELL_TYPE_NUMERIC: { // 判断当前的cell是否为Date if (HSSFDateUtil.isCellDateFormatted(cell)) { // 如果是Date类型则,取得该Cell的Date值 Date date = cell.getDateCellValue(); // 把Date转换成本地格式的字符串 cellvalue = cell.getDateCellValue().toString(); } // 如果是纯数字 else { // 取得当前Cell的数值 Integer num = new Integer((int) cell .getNumericCellValue()); cellvalue = String.valueOf(num); } break; } // 如果当前Cell的Type为STRIN case HSSFCell.CELL_TYPE_STRING: // 取得当前的Cell字符串 cellvalue = cell.getRichStringCellValue().toString().replaceAll("'", "''"); break; // 默认的Cell值 default: cellvalue = ""; } } else { cellvalue = ""; } // 在每个字段之间插入分割符 buffer.append(cellvalue).append(EXCEL_LINE_DELIMITER); } // 以字符串返回该行的数据 return buffer.toString(); } // close函数执行流的关闭操作 public void close() { // 如果is不为空,则关闭InputSteam文件输入流 if (is != null) { try { is.close(); } catch (IOException e) { is = null; } } // 如果reader不为空则关闭BufferedReader文件输入流 if (reader != null) { try { reader.close(); } catch (IOException e) { reader = null; } } } }
Main.java
package convert; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; public class Main { private static File [] getFiles(String path){ File file = new File(path); // get the folder list File[] array = file.listFiles(); return array; } public static void main(String[] args) throws IOException { // TODO code application logic here File[] files=getFiles("D://lss//data//"); for(int i=0;i<files.length;i++){ String filePath=files[i].getPath(); String fileName=files[i].getName(); String newFileName=fileName.substring(0, fileName.indexOf('.')); String s=""; try{ ExcelReader er=new ExcelReader(filePath); String line=er.readLine(); while(line != null){ s=s+line+"/r/n"; line=er.readLine(); } er.close(); }catch(Exception e){ e.printStackTrace(); } //System.out.println(s); File newFile=new File("D://lss//data//"+newFileName+".txt"); FileOutputStream fops=new FileOutputStream(newFile); fops.write(s.getBytes()); } } }
相关文章推荐
- java实现Excel文件解析---apache POI以及把汉字转化为拼音
- Java实现读取Excel并按条件输出TXT
- 空间复杂度,实现从excel导出到txt文件中的java代码自动构建,逻辑条件不同实现则不同
- JAVA WEB 实现文件数据导入(CSV、TXT、excel)
- Java实现将Excel批量转换成txt
- JAVA WEB 实现文件数据导入(CSV、TXT、excel)
- java实现爬虫技术,读取txt,word,excel,ppt,pdf,html等格式的文件
- java easyreport 导入excel、 txt 数据简单实现(一)
- java实现爬虫技术,读取txt,word,excel,ppt,pdf,html等格式的文件
- c#实现txt转化为excel
- 用java实现excel和txt文件互转
- java代码实现将无表头.txt文本文件转化为weka能识别.arff文件
- java实现excel和txt文件互转
- java 后台 Excel 文件生成后转化为字节流
- Java POI导出EXCEL经典实现 Java导出Excel弹出下载框
- 使用JAVA的开源API-JExcelAPI来操作Excel,实现基本的功能
- java easyreport 导入excel、 txt 数据数据格式校验(六)
- java实现excel、word的读取(几行几列)
- Java 操作 Excel (读取Excel2003 2007,Poi实现)
- JAVA实现将GeoHash转化为相应的经纬度坐标