Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Apache POI空白单元格_Java_Excel_Eclipse_Apache Poi - Fatal编程技术网

Java Apache POI空白单元格

Java Apache POI空白单元格,java,excel,eclipse,apache-poi,Java,Excel,Eclipse,Apache Poi,我不熟悉ApachePOI,但对Java并不陌生。我一直在尝试将数据从一个excel文件转换为另一个excel文件,将任何分隔符数据更改为新的单元格。虽然大多数新数据是正确的,但有少数例外情况不符合空白单元格的规则。 这是输入文件 这是输出文件 在下图中,记录4和记录5不按规则播放,我不明白为什么 导入java.io.File; 导入java.io.FileInputStream; 导入java.io.FileOutputStream; 导入java.io.IOException; 导入jav

我不熟悉ApachePOI,但对Java并不陌生。我一直在尝试将数据从一个excel文件转换为另一个excel文件,将任何分隔符数据更改为新的单元格。虽然大多数新数据是正确的,但有少数例外情况不符合空白单元格的规则。 这是输入文件 这是输出文件

在下图中,记录4和记录5不按规则播放,我不明白为什么

导入java.io.File;
导入java.io.FileInputStream;
导入java.io.FileOutputStream;
导入java.io.IOException;
导入java.util.Iterator;
导入org.apache.poi.ss.usermodel.Cell;
导入org.apache.poi.ss.usermodel.Row;
导入org.apache.poi.xssf.usermodel.xssfheet;
导入org.apache.poi.xssf.usermodel.xssf工作簿;
导入org.apache.poi.xssf.usermodel.XSSFCell;
导入org.apache.poi.xssf.usermodel.XSSFRow;
公共类testWrite{
公共静态void main(字符串[]args){
int rowNums=1;
试一试{
FileInputStream文件=新的FileInputStream(新文件(“ExceptionDataDummy.xlsx”);;
XSSF工作簿wb=新XSSF工作簿(文件);
XSSFSheet-sheet=wb.getSheetAt(0);
String filename=“ExceptionDataResult.xlsx”;
XSSFWorkbook工作簿=新XSSFWorkbook();
XSSFSheet sheet1=workbook.createSheet(“第一张纸”);
迭代器行=sheet.rowIterator();
int col=0;
while(rows.hasNext()){
XSSFRow行=(XSSFRow)行。下一步();
XSSFRow row1=sheet1.createRow((短)rowNums);
System.out.println(“\n”);
迭代器单元格=行。单元格迭代器();
while(cells.hasNext()){
XSSFCell cell=(XSSFCell)cells.next();
如果(XSSFCell.CELL_TYPE_NUMERIC==CELL.getCellType()){
row1.createCell(col.setCellValue(cell.getNumericCellValue());
col++;
}
其他的
if(XSSFCell.CELL\u TYPE\u STRING==CELL.getCellType()){
字符串内容=cell.getStringCellValue();
String[]items=contents.split(“,”);
对于(字符串项:项){
行1.createCell(列).setCellValue(项);
col++;
}
}
其他的
if(XSSFCell.CELL\u TYPE\u BOOLEAN==CELL.getCellType()){
row1.createCell(col.setCellValue(cell.getBooleanCellValue());
col++;
}
其他的
if((cell.equals(“”))||(XSSFCell.cell_TYPE_BLANK==cell.getCellType())|(cell==null)){
cell.setCellType(cell.cell\u TYPE\u BLANK);
col++;
}
否则{
系统输出打印(“未知单元格类型”);
}
}
rowNums++;
col=0;
}
FileOutputStream fileOut=新的FileOutputStream(文件名);
工作簿。写入(归档);
fileOut.close();
System.out.println(“您的excel文件已生成!”);
wb.close();
workbook.close();
}捕获(IOEX异常){
例如printStackTrace();
}                   
}
}

在代码中,您使用的是cellIterator

Iterator<Cell> cells = row.cellIterator();
Iterator cells=row.cellIterator();
cellIterator不包括空单元格

与使用cellIterator不同,您必须从第一个单元格开始循环到最后一个单元格,然后检查单元格是否为null

您可以参考下面的示例代码-

for (int colNum = 0; colNum < row.getLastCellNum(); colNum++) {

   Cell cell = row.getCell(colNum, Row.CREATE_NULL_AS_BLANK);
   String cellValue = null;

// do whatever you want to do with the cell or its value

}
for(int colNum=0;colNum
在代码中,您使用的是cellIterator

Iterator<Cell> cells = row.cellIterator();
Iterator cells=row.cellIterator();
cellIterator不包括空单元格

与使用cellIterator不同,您必须从第一个单元格开始循环到最后一个单元格,然后检查单元格是否为null

您可以参考下面的示例代码-

for (int colNum = 0; colNum < row.getLastCellNum(); colNum++) {

   Cell cell = row.getCell(colNum, Row.CREATE_NULL_AS_BLANK);
   String cellValue = null;

// do whatever you want to do with the cell or its value

}
for(int colNum=0;colNum