I have an existing xlsx file, on row 1 I have my headlines, what I need to is add new row at 2 and of course shift everything else down, and then add my data to this row. Can you please help me with this?
我有一个现有的xlsx文件,在第1行我有我的标题,我需要的是在2处添加新行,当然还要将其他所有内容向下移动,然后将我的数据添加到此行。你能帮我解决这个问题吗?
static void Append() throws EncryptedDocumentException, InvalidFormatException, IOException
{
InputStream inp = new FileInputStream("C:/workbook.xlsx");
Workbook wb = WorkbookFactory.create(inp);
Sheet sheet = wb.getSheetAt(0);
Row row = sheet.createRow((short) 2);
sheet.shiftRows(1, sheet.getLastRowNum()+1, 1, true,true);
row.createCell(0).setCellValue("A");
row.createCell(1).setCellValue("B");
row.createCell(2).setCellValue("This is a string");
row.createCell(3).setCellValue(true);
// Write the output to a file
FileOutputStream fileOut = new FileOutputStream("C:/workbook.xlsx");
wb.write(fileOut);
fileOut.close();
}
1 个解决方案
#1
3
Indeed the method shiftRows
is a good candidate for this need, you simply need to better set the parameters, like this:
实际上,shiftRows方法是满足这种需求的一个很好的选择,你只需要更好地设置参数,如下所示:
...
// Shift of one row all the rows starting from the 3th row
sheet.shiftRows(2, sheet.getLastRowNum(), 1, true, true);
// Create my new 3th row
Row row = sheet.createRow(2);
...
#1
3
Indeed the method shiftRows
is a good candidate for this need, you simply need to better set the parameters, like this:
实际上,shiftRows方法是满足这种需求的一个很好的选择,你只需要更好地设置参数,如下所示:
...
// Shift of one row all the rows starting from the 3th row
sheet.shiftRows(2, sheet.getLastRowNum(), 1, true, true);
// Create my new 3th row
Row row = sheet.createRow(2);
...