В настоящее время я работаю над концепцией копирования данных из одного листа Excel в другую рабочую книгу, и если пустые ячейки существуют, то их следует скопировать в выходной файл.ниже приведен скриншот для входного файла:
![enter image description here](https://i.stack.imgur.com/6qw7F.png)
вот мой код для выполнения функции копирования
import org.apache.poi.*;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Row.MissingCellPolicy;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.examples.CreateCell;
import java.io.*;
import java.util.*;
public class openwb_test {
public static void main(String[] args) throws Exception {
File inputFile=new File("input.xlsx");
FileInputStream fis=new FileInputStream(inputFile);
XSSFWorkbook inputWorkbook=new XSSFWorkbook(fis);
int inputSheetCount=inputWorkbook.getNumberOfSheets();
System.out.println("Input sheetCount: "+inputSheetCount);
File outputFile=new File("output.xlsx");
FileOutputStream fos=new FileOutputStream(outputFile);
XSSFWorkbook outputWorkbook=new XSSFWorkbook();
for(int i=0;i<inputSheetCount;i++)
{
XSSFSheet inputSheet=inputWorkbook.getSheetAt(i);
String inputSheetName=inputWorkbook.getSheetName(i);
XSSFSheet outputSheet=outputWorkbook.createSheet(inputSheetName);
copySheet(inputSheet,outputSheet);
}
outputWorkbook.write(fos);
fos.close();
outputWorkbook.close();
}
public static void copySheet(XSSFSheet inputSheet,XSSFSheet outputSheet)
{
int rowCount=inputSheet.getLastRowNum();
System.out.println(rowCount+" rows in inputsheet "+inputSheet.getSheetName());
int currentRowIndex=0; if(rowCount>0)
{
Iterator<Row> rowIterator=inputSheet.iterator();
//XSSFRow row=(XSSFRow) rowIterator.next();
while(rowIterator.hasNext())
{
int currentCellIndex=0;
Iterator<Cell> cellIterator=((XSSFRow) rowIterator.next()).cellIterator();
while(cellIterator.hasNext())
{
String cellData=cellIterator.next().toString();
if(currentCellIndex==0 )
outputSheet.createRow(currentRowIndex).createCell(currentCellIndex).setCellValue(cellData);
else
outputSheet.getRow(currentRowIndex).createCell(currentCellIndex).setCellValue(cellData);
currentCellIndex++;
}
currentRowIndex++;
System.out.println(currentRowIndex);
}
System.out.println((currentRowIndex-1)+" rows added to outputsheet "+outputSheet.getSheetName());
System.out.println();
}
}
}
Но если я запускаю приведенный выше кодрезультаты будут скопированы, но там, где есть пустые ячейки, код будет обрезан.Например, ниже приведен фрагмент вывода:
![enter image description here](https://i.stack.imgur.com/VX5Pw.png)
Может кто-нибудь подсказать мне, как мы можем обрабатывать пустую ячейку в этом сценарии, так как я ожидаю, что данные входного файла должны быть скопированыкак он включает пустые ячейки в выходной файл