使用NPOI将数据从一张纸复印到另一张纸上

我是C#和Excel的新手,我试图将数据从一张表(充满数据)复制到一张空白的新表中。 我正在使用NPOI,我已经想出了一些事情,但是在添加数据时遇到了问题。

第二张纸是空的,所以所有的单元格都是空的(如果我错了,请纠正我)。 当我尝试将数据从第一张表复制到第二张时,没有任何反应:单元格没有填充。

using (FileStream fs = new FileStream(@"C:UsersMyDoc.xlsx", FileMode.Open, FileAccess.ReadWrite))
{
    XSSFWorkbook templateWorkbook = new XSSFWorkbook(fs);

    //Load the sheets needed
    var sheettoget = templateWorkbook.GetSheet("Sheet1");
    var sheettoadd = templateWorkbook.GetSheet("Sheet2");

    XSSFRow row =  (XSSFRow)sheettoadd.CreateRow(0);
    var cell = row.CreateCell(0);             
    var data = sheettoget.GetRow(0).GetCell(4).StringCellValue.ToString();
    cell.SetCellValue(data); //the cell is not populated
}

在你的代码中,它看起来并不像你曾经将修改写回到文件中。 如果您在Excel中打开该文件并且没有看到更改,这可以解释原因。 我认为你想要做的是这样的事情:

// Read the file into a workbook
XSSFWorkbook templateWorkbook;
using (FileStream fs = new FileStream(@"C:TempMyDoc.xlsx", FileMode.Open, FileAccess.Read))
{
    templateWorkbook = new XSSFWorkbook(fs);
}

// Load the sheets needed (if the new sheet doesn't already exist, create it)
var sheettoget = templateWorkbook.GetSheet("Sheet1");
var sheettoadd = templateWorkbook.GetSheet("Sheet2");
if (sheettoadd == null)
{
    sheettoadd = templateWorkbook.CreateSheet("Sheet2");
}

// Make changes
XSSFRow row = (XSSFRow)sheettoadd.CreateRow(0);
var cell = row.CreateCell(0);
var data = sheettoget.GetRow(0).GetCell(4).StringCellValue.ToString();
cell.SetCellValue(data);

// Write the changes back to the file
using (FileStream fs = new FileStream(@"C:TempMyDoc.xlsx", FileMode.Create, FileAccess.Write))
{
    templateWorkbook.Write(fs);
}

如果您尝试复制整个工作表,则无需逐个单元格完成。 NPOI有一个CopySheet方法可以用来做到这一点:

sheettoget.CopySheet("Sheet2", true);
链接地址: http://www.djcxy.com/p/35767.html

上一篇: Copying Data from one Sheet to Another using NPOI

下一篇: Copy Worksheet Excel VSTO C#