for (ProfessionalDAO p:v.getProfessional()) { row = sheet.getRow(beginRow + p.getProfessionalNumber() - 1); fillVoluntaryDataProfession(xssfWorkbook, sheet, row.getCell(professionColumn), p.getProfessionalCode(), professionColumn); fillVoluntaryDataProfession(xssfWorkbook, sheet, row.getCell(professionColumn + 1), p.getProfessionalName(), professionColumn + 1); //fillVoluntaryData(xssfWorkbook, sheet, row.createCell(professionColumn ++), p.getProfessionalName(),columnIndex-1,beginRow, professionColumn+1); //把专业组名称改为定长 }详细解释代码
时间: 2024-04-23 08:21:46 浏览: 23
这是一段Java代码,主要是对Excel表格进行操作。该代码使用了foreach循环,遍历了一个类型为ProfessionalDAO的List对象v中的所有元素,并对每个元素进行操作。
具体来说,代码首先通过p.getProfessionalNumber()方法获取专业的序号,然后计算出该专业在Excel表格中的行数,并使用这个行数获取到该专业在表格中对应的行对象row。
接下来,代码调用fillVoluntaryDataProfession()方法,将专业代码和专业名称填入表格中。该方法的第一个参数是XSSFWorkbook对象,表示要操作的Excel文件;第二个参数是要填入数据的Sheet对象;第三个参数是要填入数据的单元格对象;第四个参数是要填入的数据;第五个参数是要填入数据的列数。
最后,代码将专业组名称改为定长,具体实现未给出。
相关问题
XSSFRow newRow = sheet.getRow(rowIndex);为什么newRow是null
可能是因为该行(rowIndex)尚未创建。如果该行还不存在,则需要先使用createRow()方法创建该行,然后才能使用getRow()方法获取该行对象。您可以尝试以下代码:
```
XSSFRow newRow = sheet.getRow(rowIndex);
if (newRow == null) {
newRow = sheet.createRow(rowIndex);
}
```
这将首先尝试获取该行的引用,如果该行不存在,则将使用createRow()方法创建该行。这样就可以避免NullPointerException异常。
解释一下下面这段代码@Override public List<List<Object>> getBankListExcel(InputStream in, String fileName) throws Exception { List<List<Object>> list = new ArrayList<>(); Workbook work = this.getWorkbook(in, fileName); if (null == work) { throw new Exception("创建Excel工作簿为空"); } Sheet sheet = null; Row row = null; Cell cell = null; for( int i = 0;i<work.getNumberOfSheets();i++) { sheet = (Sheet) work.getSheetAt(i); //sheet.getSheetName(); if (sheet == null) { continue; } for (int j = sheet.getFirstRowNum(); j <= sheet.getLastRowNum(); j++) { row = sheet.getRow(j); if (row == null) { continue; } List<Object> li = new ArrayList<>(); for (int y = row.getFirstCellNum(); y < row.getLastCellNum(); y++) { cell = row.getCell(y); li.add(cell); } list.add(li); } } return list; }
这段代码是一个方法,用于从Excel文件中读取数据并返回一个包含数据的二维列表。下面是对代码的逐行解释:
1. `@Override`:这是一个注解,表示该方法是对父类或接口中同名方法的重写。
2. `public List<List<Object>> getBankListExcel(InputStream in, String fileName) throws Exception`:这是方法的定义,参数包括一个输入流和文件名,返回一个二维列表。
3. `List<List<Object>> list = new ArrayList<>();`:创建一个空的二维列表,用于存储读取到的数据。
4. `Workbook work = this.getWorkbook(in, fileName);`:调用一个名为`getWorkbook`的方法,传入输入流和文件名,返回一个`Workbook`对象,表示Excel工作簿。
5. `if (null == work) { throw new Exception("创建Excel工作簿为空"); }`:如果`work`为空,则抛出异常,表示无法创建Excel工作簿。
6. `Sheet sheet = null; Row row = null; Cell cell = null;`:创建变量`sheet`、`row`和`cell`,用于引用工作表、行和单元格对象。
7. `for( int i = 0;i<work.getNumberOfSheets();i++) {`:遍历工作簿中的所有工作表。
8. `sheet = (Sheet) work.getSheetAt(i);`:获取第`i`个工作表。
9. `if (sheet == null) { continue; }`:如果工作表为空,跳过当前循环,继续下一次循环。
10. `for (int j = sheet.getFirstRowNum(); j <= sheet.getLastRowNum(); j++) {`:遍历工作表中的所有行。
11. `row = sheet.getRow(j);`:获取第`j`行。
12. `if (row == null) { continue; }`:如果行为空,跳过当前循环,继续下一次循环。
13. `List<Object> li = new ArrayList<>();`:创建一个空的列表,用于存储当前行的数据。
14. `for (int y = row.getFirstCellNum(); y < row.getLastCellNum(); y++) {`:遍历行中的所有单元格。
15. `cell = row.getCell(y);`:获取第`y`个单元格。
16. `li.add(cell);`:将单元格的值添加到当前行的列表中。
17. `list.add(li);`:将当前行的列表添加到最终的二维列表中。
18. `return list;`:返回包含从Excel中读取到的数据的二维列表。
该方法通过遍历每个工作表、每行、每个单元格,将读取到的数据存储在一个二维列表中,并最终返回该列表。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)