Cra*_*Key 1 c# excel interop office-interop
我对此感到非常困难,但我需要能够使用 Interop 连接到打开的 excel 文件,然后写入该文件。
该文件由外部进程打开,然后此应用程序稍后进入以写入工作簿。我可以让它打开一个文件并写入活动工作簿。但我找不到连接到以前的工作簿和写作的方法。
我一直在使用,Marshal.GetActiveObject但我很快就会在打开多个文件的计算机上运行该应用程序,并且需要写入一个很可能不是活动文件的文件。
System.Runtime.InteropServices.Marshal.BindToMoniker 可用于访问在 Excel 中打开的文件,或者在尚未打开的情况下打开它:
var wb = Marshal.BindToMoniker(@"C:\x.xlsx") as Microsoft.Office.Interop.Excel.Workbook;
Run Code Online (Sandbox Code Playgroud)
GetObject可以参考使用Microsoft.VisualBasic(如果需要,它还可以打开文件):
object o = Microsoft.VisualBasic.Interaction.GetObject(@"C:\x.xlsx", "Excel.Application");
var wb = o as Microsoft.Office.Interop.Excel.Workbook;
if (wb != null)
{
Microsoft.Office.Interop.Excel.Application xlApp = wb.Application;
// your code
}
Run Code Online (Sandbox Code Playgroud)
Microsoft.VisualBasic通过检查GetObject源代码可以避免引用https://github.com/Microsoft/referencesource/blob/master/Microsoft.VisualBasic/runtime/msvbalib/Interaction.vb#L1039
| 归档时间: |
|
| 查看次数: |
7370 次 |
| 最近记录: |