是否可以使用 NPOI 和 C# 编辑 .xlsm 文件
is it possible to edit .xlsm files using NPOI with C#
感谢本站人员的帮助,我能够使用 NPOI 修改 .xlsx 文件。代码如下,但我的最终目标是能够修改 .xlsm 文件单元格值。有没有办法做到这一点?我尝试使用以下代码 运行 但是一旦我 运行 程序就无法打开文件。
XSSFWorkbook templateWorkbook;
using (FileStream fs = new FileStream(@"C:\Users\jzhu\Desktop\FlexTimeSheetTest.xlsm", FileMode.Open, FileAccess.ReadWrite))
{
templateWorkbook = new XSSFWorkbook(fs);
fs.Close();
}
XSSFSheet sheet = (XSSFSheet)templateWorkbook.GetSheet("Sheet1");
sheet.GetRow(0).GetCell(0).SetCellValue("Drago");
sheet.ForceFormulaRecalculation = true;
File.Delete(@"C:\Users\jzhu\Desktop\FlexTimeSheetTest.xlsm");
using (FileStream file = new FileStream(@"C:\Users\jzhu\Desktop\FlexTimeSheetTest.xlsm", FileMode.CreateNew, FileAccess.Write))
{
templateWorkbook.Write(file);
file.Close();
}
将您的 NPOI 库更新到 latest 版本(目前为 2.1.3.1)。
使用这个版本,你的代码和样本 xlsm
文件记录了一个宏 - 我在用你的代码修改后得到了有效的文件。
Excel可以打开,宏可以运行.
XSSFWorkbook xlWorkbook;
using (FileStream file = new FileStream(toEditFile,FileMode.Open, FileAccess.Read))
{
xlWorkbook = new XSSFWorkbook(file);
}
var xlWorksheet = xlWorkbook.GetSheet(@"sheet");
// do stuff
using (FileStream file = new FileStream(toEditFile, FileMode.Create, FileAccess.Write))
{
xlWorkbook.Write(file);
file.Close();
}
感谢本站人员的帮助,我能够使用 NPOI 修改 .xlsx 文件。代码如下,但我的最终目标是能够修改 .xlsm 文件单元格值。有没有办法做到这一点?我尝试使用以下代码 运行 但是一旦我 运行 程序就无法打开文件。
XSSFWorkbook templateWorkbook;
using (FileStream fs = new FileStream(@"C:\Users\jzhu\Desktop\FlexTimeSheetTest.xlsm", FileMode.Open, FileAccess.ReadWrite))
{
templateWorkbook = new XSSFWorkbook(fs);
fs.Close();
}
XSSFSheet sheet = (XSSFSheet)templateWorkbook.GetSheet("Sheet1");
sheet.GetRow(0).GetCell(0).SetCellValue("Drago");
sheet.ForceFormulaRecalculation = true;
File.Delete(@"C:\Users\jzhu\Desktop\FlexTimeSheetTest.xlsm");
using (FileStream file = new FileStream(@"C:\Users\jzhu\Desktop\FlexTimeSheetTest.xlsm", FileMode.CreateNew, FileAccess.Write))
{
templateWorkbook.Write(file);
file.Close();
}
将您的 NPOI 库更新到 latest 版本(目前为 2.1.3.1)。
使用这个版本,你的代码和样本 xlsm
文件记录了一个宏 - 我在用你的代码修改后得到了有效的文件。
Excel可以打开,宏可以运行.
XSSFWorkbook xlWorkbook;
using (FileStream file = new FileStream(toEditFile,FileMode.Open, FileAccess.Read))
{
xlWorkbook = new XSSFWorkbook(file);
}
var xlWorksheet = xlWorkbook.GetSheet(@"sheet");
// do stuff
using (FileStream file = new FileStream(toEditFile, FileMode.Create, FileAccess.Write))
{
xlWorkbook.Write(file);
file.Close();
}