问题遇到的现象和发生背景
利用java的excel工具jxl进行对excel的读写,希望将1234.xls和12345.xls中的sheet1里的信息全都放到123456.xls中的sheet1中
遇到的现象和发生背景,请写出第一个错误信息
错误信息为:Exception in thread "main" java.lang.NullPointerException
常见的空指针报错问题
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
//------------------------------------------------
//first step:获取文件路径的列表
//------------------------------------------------
String basePath="C:\\Users\\10798\\Desktop\\test\\read";
String[] path_list=new File(basePath).list();
//--------------------------------------------
//second step:EXCEL的读写
//--------------------------------------------
//write表的路径设置
String url_write = "C:\\Users\\10798\\Desktop\\test_excel\\out\\123456.xls";
//设置行计数器————为了能够在第一张表读写完成后,第二张表能继续写在后面而不是覆盖
int count = 0;
//开搞!!!!!!!!!
try{
//write表的设置
//文件流
FileOutputStream os = new FileOutputStream(url_write);
//创建工作薄
WritableWorkbook workbook_write = Workbook.createWorkbook(os);
//创建新的一页
WritableSheet sheet_write = workbook_write.createSheet("First Sheet", 0);
//writing by reading
for (int a = 0; a <= path_list.length-1;a++)
{
//动态获取read表路径
Workbook workbook_read = Workbook.getWorkbook(new File("C:\\Users\\10798\\Desktop\\test_excel\\read\\"+path_list[a])); //这里输入表格文档的路径及名字
Sheet sheet_read = workbook_read.getSheet(0); //下标从0开始表示第一个工作表
//写入
for (int i = 0; i < sheet_read.getRows(); i++) //行数
{
for (int j = 0; j < sheet_read.getColumns(); j++) //列数
{
Cell cell_read = sheet_read.getCell(j, i); //这是一个单元格 这里注意j i的顺序不要颠倒
jxl.write.Label l1=new jxl.write.Label(j, i+count, String.valueOf(cell_read.getContents())); // i j注意哈
sheet_write.addCell(l1);
//System.out.print(cell.getContents()+" "); //获取单元格内容并输出
}
System.out.println(); //换行
}
//计数器增值
count = count + sheet_read.getRows();
//动态关闭read资源
workbook_read.close();
}
//执行写入
workbook_write.write();
//关闭资源
workbook_write.close();
os.close();
}
//必要的异常处理设置
catch (IOException e) {
e.printStackTrace();
}
catch (BiffException e) {
e.printStackTrace();
}
catch (RowsExceededException e) {
e.printStackTrace();
}
catch (WriteException e) {
e.printStackTrace();
}
运行结果及详细报错内容
运行结果报的是第45行,即for (int a = 0; a <= path_list.length-1;a++)
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
自己筛选过,45行本行没发现问题,单独择出来执行,path_list不为null且元值存在,其他地方不知道哪里出了问题
且:无法DEBUG直接报错