-1
我試圖用多個工作表創建一個工作簿,但始終只在每個Excel工作表中獲取一行,這是源文件中的最後一行。 我的代碼工作如下:HSSF createrow每次只創建一行
public void parse()
{
BufferedReader reader = null;
BufferedWriter writer = null;
String tmpFile = "tmpFile.tmp";
ExcelFile excelFile = new ExcelFile(_fileName + ".xlsx");
int lineCount = 0;
try
{
reader = new BufferedReader(new FileReader(_fileName));
writer = new BufferedWriter(new FileWriter(tmpFile));
String line = null;
while ((line = reader.readLine()) != null)
{
String newLine = processLine(line.trim());
if (newLine == null)
continue;
else
{
if (newLine.isEmpty())
{
lineCount++;
if(lineCount > 1)
{
continue;
}
}
else if (!newLine.isEmpty())
{
lineCount = 0;
}
if (getRepositoryName(newLine) != null && !getRepositoryName(newLine).isEmpty())
excelFile.writeLine(getRepositoryName(newLine), newLine);
}
}
reader.close();
excelFile.createFile(_fileName.split("\\.")[0]);
}
catch (IOException e) {
e.printStackTrace();
}
}
創作所做的每一行的: excelFile.writeLine(getRepositoryName(新行),換行); 從以前的方法。
的WriteLine作爲實現ExcelFile類如下:
public void writeLine(String sheetName, String line)
{
HSSFSheet sheet = getSheet2(sheetName);
HSSFSheet sheetMain = getSheet2(_mainSheetName);
HSSFRow row = sheet.createRow(sheet.getLastRowNum() == 0 ? 0 :sheet.getLastRowNum()+1);
HSSFRow rowMain = sheetMain.createRow(sheetMain.getLastRowNum() == 0 ? 0 :sheetMain.getLastRowNum()+1);
String[] columnsArr = line.split(",");
for (int i = 0; i < columnsArr.length ; i++)
{
HSSFCell cell = row.createCell(i);
HSSFCell cellMain = rowMain.createCell(i);
cell.setCellValue(columnsArr[i]);
cellMain.setCellValue(columnsArr[i]);
}
}
需要知道我做錯了,如果它可以創建多行不用時循環中運行。
提前致謝!
感謝您的回答!我能夠看到並理解這就是發生了什麼,但仍然不明白爲什麼每次都不增加,我該如何解決這個問題。 – Alina
我想你可以使用'getPhysicalNumberOfRows()'方法。我已經更新了我的answear以顯示該解決方案。 –