package jv; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; public class Get { public static void main(String[] args) { Get obj = new Get(); // 此处路径指定文件夹 File file = new File("E:/DFYY"); if (file.isDirectory()) { File[] files = file.listFiles(); for (File f : files) // 读取子目录下的Excel文件 if (f.isDirectory()) { File[] subfiles = f.listFiles(); for (File fi : subfiles) { // 只读取Excel文件 if (fi.getName().indexOf(".xls") > 0) { obj.readExcelWriteDat(fi); } } } else { // 只读取Excel文件 if (f.getName().indexOf(".xls") > 0) { obj.readExcelWriteDat(f); } } } } public void readExcelWriteDat(File file) { // 创建文件输出流 FileWriter fw = null; PrintWriter out = null; try { // 创建输入流 InputStream is = new FileInputStream(file.getAbsolutePath()); // jxl提供的Workbook类 Workbook wb = Workbook.getWorkbook(is); // 每一张工作簿中只有两张工作表,故用wb.getSheet(0),wb.getSheet(1); Sheet sheetPhase = wb.getSheet(0); Sheet sheetRes = wb.getSheet(1); Cell[] cell0 = sheetPhase.getColumn(0); //以单元格名字命名文件名 for(int k=1;k<sheetPhase.getColumns();k++){ String newfileName =sheetPhase.getCell(k, 0).getContents(); fw = new FileWriter(file.getParent()+"/"+newfileName + ".dat"); out = new PrintWriter(fw); //获得工作表的某一列的值 Cell[] cellPhase = sheetPhase.getColumn(k); Cell[] cellRes = sheetRes.getColumn(k); //组合不同工作表同一列值输出 for(int i =1;i<sheetPhase.getRows();i++){ out.print(cell0[i].getContents()+" "+cellPhase[i].getContents()+" " +cellRes[i].getContents()); out.print("\r\n"); } try { // 关闭流 out.close(); fw.close(); out.flush(); } catch (IOException e) { e.printStackTrace(); } } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (BiffException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } 错误提示:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10at jxl.read.biff.SheetImpl.getColumn(SheetImpl.java:490)at jv.Get.readExcelWriteDat(Get.java:57)at jv.Get.main(Get.java:27)