使用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