import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; public class exchange{ public static void main(String[] args) { // 找到excel文件的路径 String filepath = "e:\111.xls"; try { Workbook workbook = Workbook.getWorkbook(new File(filepath)); Sheet sheet = workbook.getSheet(0); //转成txt要保存的位置以及文件名 File file = new File("e:/1.txt"); FileWriter fw = new FileWriter(file); BufferedWriter bw = new BufferedWriter(fw); // j为行数,getCell("列号","行号") int j = sheet.getRows(); int y = sheet.getColumns(); for (int i = 0; i < j; i++) { for(int x=0; x<y; x++){ Cell c = sheet.getCell(x, i); String s = c.getContents(); //每一列用逗号隔开,并且第一列的最前边和最后一列的最后边不加逗号 if(x!=0 && StringUtils.isNotBlank(s)) bw.write(","+s); else bw.write(s); bw.flush(); } bw.newLine(); bw.flush(); } System.out.println("写入转换结束"); } catch (BiffException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
注意1:Excel文件格式一定要是xls的不能是xlsx的;如果是xlsx后缀的,要另存为xls格式的才能将xls格式的进行转换
注意2:jxl.jar中封装的日期,对年份的读取默认是取后两位的,而月和日是原样输出。如果需要全部显示年份可以在String s = c.getContents();之后加个判断(找到Excel表中日期所在的列,假设日期在Excel表的第二列即x==1,则做如下判断)
if(x == 1){
s = "20"+s;
}
说明1:主要是用了文件操作的输入和输出,以及jxl.jar中封装的获取行和列还有读取日期并输出日期格式的方法
说明2:一般我们配置的jar包或者Maven仓库中是没有jxl.jar这个jar包的,但是转换需要用到所以我们需要自己去添加jar包
如何添加:在所属项目的maven的pom.xml中进行添加依赖,如下:
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.10</version>
</dependency>
添加完依赖之后则update或者install一下maven,maven会自动下载jxl.jar这个jar包的
maven仓库更新完成之后jar包就有了,就可以import了,jxl中封装的getCell(),getContents()等方法就可以使用了。