使用NPOI将excel工作表附加到其他工作表
我试图将同一工作簿中多个工作表中的数据附加到第一个工作表中 以下是我能够完成的工作:使用NPOI将excel工作表附加到其他工作表,excel,apache-poi,npoi,Excel,Apache Poi,Npoi,我试图将同一工作簿中多个工作表中的数据附加到第一个工作表中 以下是我能够完成的工作: void SomeMethod() { HSSFWorkbook hssfwb; using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { hssfwb = new HSSFWorkbook(file); } var BaseSheet = wo
void SomeMethod()
{
HSSFWorkbook hssfwb;
using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
hssfwb = new HSSFWorkbook(file);
}
var BaseSheet = workbook.GetSheetAt(0);
for (int i = 1; i < workbook.NumberOfSheets; i++)
{
AddRowsToBaseSheet(BaseSheet, workbook.GetSheetAt(i), workbook);
}
}
private void AddRowsToBaseSheet(ISheet BaseSheet, ISheet sheet, HSSFWorkbook workbook)
{
var temp = sheet.GetRowEnumerator();
while (temp.MoveNext())
{
HSSFRow sourceRow = (HSSFRow)temp.Current;
HSSFRow destinationRow = (HSSFRow)BaseSheet.CreateRow(BaseSheet.LastRowNum + 1);
CopyRow(workbook, sourceRow, destinationRow);
}
}
private void CopyRow(HSSFWorkbook workbook, IRow sourceRow, IRow destinationRow)
{
// Loop through source columns to add to new row
for (int i = 0; i < sourceRow.LastCellNum; i++)
{
// Grab a copy of the old/new cell
ICell oldCell = sourceRow.GetCell(i);
ICell newCell = destinationRow.CreateCell(i);
// If the old cell is null jump to next cell
if (oldCell == null)
{
newCell = null;
continue;
}
// Set the cell data type
newCell.SetCellType(oldCell.CellType);
// Set the cell data value
switch (oldCell.CellType)
{
case CellType.Blank:
newCell.SetCellValue(oldCell.StringCellValue);
break;
case CellType.Boolean:
newCell.SetCellValue(oldCell.BooleanCellValue);
break;
case CellType.Error:
newCell.SetCellErrorValue(oldCell.ErrorCellValue);
break;
case CellType.Formula:
newCell.SetCellFormula(oldCell.CellFormula);
break;
case CellType.Numeric:
newCell.SetCellValue(oldCell.NumericCellValue);
break;
case CellType.String:
newCell.SetCellValue(oldCell.RichStringCellValue);
break;
case CellType.Unknown:
newCell.SetCellValue(oldCell.StringCellValue);
break;
}
}
}
我可能犯了一个愚蠢的错误,或者有没有其他图书馆也犯了同样的错误
在这种情况下,转换为数据集将不起作用,因为列不相关您在哪里写入输出文件?输出文件是相同的,但在第一张表中,所有的表都没有附加在第一张表中,这就是我的目标,以扩展@DariusX的内容。在他的评论中提到,您需要通过写入输出文件来保存更改。目前,您只是在内存中添加新行。当程序完成时,这些更改将被丢弃,因为您尚未将它们写入文件。工作非常完美:我认为它是指excel,但它实际上创建了它的内存表示形式