【问题标题】:Excel is not updated with interop in C#Excel 未使用 C# 中的互操作进行更新
【发布时间】:2017-10-30 14:42:37
【问题描述】:

我有以下代码,根据在 excel 中找到的值,我必须更新该行中的其他单元格值。但它不会将值更新回 excel 表。 MasterTable 属于 DataTable,它与 excel 具有相同的列值,我需要将这些值更新到 excel。请帮我找出问题。

 for (int row = 0; row < masterTable.Rows.Count; row++)
        {
            // Get the CIS ID
            string CISid = Convert.ToString(masterTable.Rows[row][RemoveSpecialCharachtersAndSpace("SOW / CIS No")]);

            Excel.Range range = xlWorksheet.UsedRange.Rows.Find(CISid, System.Type.Missing, Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, System.Type.Missing, System.Type.Missing, System.Type.Missing);
            //FindRangeCISByID(CISid);
            if (range != null && range.Rows.Count > 0 && (!string.IsNullOrEmpty(Convert.ToString(range.Rows.Cells[1, 1].Value2))))
            {
                for (int cell1 = 1; cell1 < 5; cell1++)
                {
                    //Master Excel Copy
                    string masterColumnCopy = Convert.ToString(range.Rows.Cells[1, cell1].Value2);
                    // Local Data table copy  of column value
                    string datatableColumnValue = GetColumnValueFromDataTable(masterTable, cell1);
                    xlWorksheet.UsedRange.Find(CISid).Cells[1, cell1].Value = datatableColumnValue ;
                }
            }
        }  



xlWorkbook.Save();
                xlWorkbook.Close();
                xlApp.Quit();`

【问题讨论】:

  • 你试图将数据表中的值导出到 excel
  • 并不完全有一些我需要从这个数据表中获取的值,并且基于这些值我需要对一些单元格应用格式,所以我需要使用 Interop。
  • 您正在保存更改吗?我看到您更新了值但没有保存文件。
  • 请查看更新后的代码,是的,在完成所有更新后,我正在循环结束时更新文件,我也尝试在循环内更新,但它没有更新回 excel。

标签: c# .net com interop excel-interop


【解决方案1】:

听起来很奇怪,但它使用的是工作簿的 saveAs 函数而不是保存。

我已将保存代码更改为以下

xlWorkbook.SaveAs(@"D:\ExcelData_new.xlsx", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing,
       false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,
       Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 

它正在工作

【讨论】:

    猜你喜欢
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多