C#:以编程方式保存已编辑的Excel工作簿

时间:2017-05-17 11:17:46

标签: c# excel

我尝试使用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);
}

这是我在主类中运行的方法。

1 个答案:

答案 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分配工作簿。谢谢你的帮助:)