如何使用 C# 互操作将更改保存到原始 excel 文件?
How to save changes to original excel file using c# interop?
我使用以下代码打开文件:
object MissingValue = System.Reflection.Missing.Value;
xlWorkBook = xlApp.Workbooks.Open(filepath, MissingValue, false,
MissingValue, MissingValue, MissingValue, MissingValue,MissingValue,
MissingValue, MissingValue, MissingValue, MissingValue, MissingValue, MissingValue, MissingValue);
我尝试了以下所有方法来保存和关闭文件,但由于文件是只读文件,所有这些都导致了 COM 错误:
xlApp.DisplayAlerts = false;
Excel.Workbooks wbs = xlApp.Workbooks;
foreach (Excel.Workbook wb in wbs)
{
Console.WriteLine(wb.Name);
wb.Save();
wb.Close();
}
//xlWorkBook.Save();
//xlWorkBook.SaveAs(filepath, Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing,
//false, false, Excel.XlSaveAsAccessMode.xlNoChange,
//Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
//xlWorkBook.Close();
//xlWorkBook.Close(true, filepath, filepath);
//xlWorkBook.Close(false, MissingValue, MissingValue);
xlApp.Quit();
releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);
我想知道可能出了什么问题,因为我提到了其他几个被问到的问题。请帮忙!。谢谢你的时间。
我找到了解决方案。我使用 Excel.range 来更新所需的单元格值。
当我先于别人释放Range对象时,保存关闭成功。谢谢大家:)
发布代码如下:
private void releaseObject(object obj)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
}
catch (Exception ex)
{
obj = null;
MessageBox.Show("Unable to release the Object " + ex.ToString());
}
finally
{
GC.Collect();
}
}
我使用以下代码打开文件:
object MissingValue = System.Reflection.Missing.Value;
xlWorkBook = xlApp.Workbooks.Open(filepath, MissingValue, false,
MissingValue, MissingValue, MissingValue, MissingValue,MissingValue,
MissingValue, MissingValue, MissingValue, MissingValue, MissingValue, MissingValue, MissingValue);
我尝试了以下所有方法来保存和关闭文件,但由于文件是只读文件,所有这些都导致了 COM 错误:
xlApp.DisplayAlerts = false;
Excel.Workbooks wbs = xlApp.Workbooks;
foreach (Excel.Workbook wb in wbs)
{
Console.WriteLine(wb.Name);
wb.Save();
wb.Close();
}
//xlWorkBook.Save();
//xlWorkBook.SaveAs(filepath, Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing,
//false, false, Excel.XlSaveAsAccessMode.xlNoChange,
//Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
//xlWorkBook.Close();
//xlWorkBook.Close(true, filepath, filepath);
//xlWorkBook.Close(false, MissingValue, MissingValue);
xlApp.Quit();
releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);
我想知道可能出了什么问题,因为我提到了其他几个被问到的问题。请帮忙!。谢谢你的时间。
我找到了解决方案。我使用 Excel.range 来更新所需的单元格值。 当我先于别人释放Range对象时,保存关闭成功。谢谢大家:) 发布代码如下:
private void releaseObject(object obj)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
}
catch (Exception ex)
{
obj = null;
MessageBox.Show("Unable to release the Object " + ex.ToString());
}
finally
{
GC.Collect();
}
}