簡體   English   中英

使用互操作查找和編輯打開的Excel工作表

[英]Find and edit open Excel sheet using interop

我已經鏈接了一個從API獲取數據的應用程序,在將新合同加載到程序時打開工作表。 現在,當我收集新數據時,我稍后會在程序中嘗試將新數據寫入excel工作表。

我知道如何將數據寫入Excel工作表以及如何打開要寫入的工作表。 問題是一旦打開工作表我就不知道如何寫它,我所能做的就是打開工作表的另一個實例。

我需要能夠在一個空白處打開工作表,然后在以后的空白中更新現在打開的工作表。 如何檢查工作表是否已打開以及是否可以再次訪問它以向其中寫入更多數據?

這是我打開Excel的方式,

Microsoft.Office.Interop.Excel.Application xlApp = new  Microsoft.Office.Interop.Excel.Application();
Console.WriteLine("Opening Excel...");

if (xlApp == null)
{
 Console.WriteLine("EXCEL could not be started. Check that your office installation and project references are correct.");
return;
}


xlApp.Visible = true;

Workbook wb = xlApp.Workbooks.Open(@"C:\Users\Craig Key\Desktop\AppExports\TestExport.xlsx");
Console.WriteLine("Opening Currently Linked Workbook...");

Worksheet ws = (Worksheet)wb.ActiveSheet;
Console.WriteLine("Opening Active Worksheet...");

if (ws == null)
{
Console.WriteLine("Worksheet could not be created. Check that your office installation and project references are correct.");
}

現在稍后,我需要在程序后面找到xlApp並再次寫入它,而無需打開文件的另一個實例。

我搜索了一會后才發現,我需要使用沼澤來嘗試綁定打開的實例,然后使用它。

Microsoft.Office.Interop.Excel.Application xlApp = null;
//Microsoft.Office.Interop.Excel.Workbooks wbs = null;
Microsoft.Office.Interop.Excel.Workbook wb = null;
Microsoft.Office.Interop.Excel.Worksheet ws = null;
bool wasFoundRunning = false;
Microsoft.Office.Interop.Excel.Application tApp = null;
 //Checks to see if excel is opened
Console.WriteLine("CDC is looking for Excel...");
   try
   {
    tApp = (Microsoft.Office.Interop.Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
    wasFoundRunning = true;
   }
    catch (Exception)//Excel not open
   {
    wasFoundRunning = false;
   }
   if (true == wasFoundRunning)
   {
    //Control Excel
   }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM