我尝试使用C#以编程方式保存活动工作簿,但未保存更改。我目前正在使用Save
方法,因为我希望将文件保存在同一位置,而不创建具有相同名称的新文件并替换现有文件(SaveAs
)。
这是我目前正在尝试的代码,
public void Test()
{
Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
if (xlApp == null)
{
Console.WriteLine("Excel is not properly installed");
return;
}
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlWorkBook = xlApp.Workbooks.Add(misValue);
this.xlApp.Workbooks.Open(workbookPath);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
int col = 1;
for (int i = 1; i < intVal.Count; i++)
{
xlWorkSheet.Cells[col, i] = "TEST";
}
Console.WriteLine(this.xlApp.ActiveWorkbook.FullName);
this.xlApp.ActiveWorkbook.Save();
//xlWorkBook.SaveAs(workbookPath, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
//this.xlApp.ActiveWorkbook.Close(false, misValue, misValue);
//xlApp.Quit();
Marshal.ReleaseComObject(xlWorkSheet);
Marshal.ReleaseComObject(xlWorkBook);
Marshal.ReleaseComObject(xlApp);
//this.xlApp.ActiveWorkbook.Close(false, misValue, misValue);
}
这是我在主类中运行的方法。
答案 0 :(得分:0)
xlApp = new Microsoft.Office.Interop.Excel.Application();
System.Threading.Thread.Sleep(2000);
xlWorkBook = xlApp.Workbooks.Open(workbookPath);
xlSheets = xlWorkBook.Worksheets;
xlWorkSheet = (Excel.Worksheet)xlSheets.get_Item(1);
我解决了我的问题。第一个问题是我使用this.xlApp
这是范围之外的变量。第二个问题是我没有为xlWorkBook
分配工作簿。谢谢你的帮助:)