簡體   English   中英

使用C#Interop從Excel獲取明文的所有工作表名稱?

[英]Get all worksheet names in plaintext from Excel with C# Interop?

我正在使用VS2010 + Office Interop 2007嘗試從具有5-6頁的Excel電子表格中獲取一些特定的電子表格名稱。 我正在做的就是在制表符分隔的文本文件中保存我需要的那些電子表格以便進一步處理。 因此,對於我得到的三個電子表格名稱,每個名稱都有自己的制表符分隔文本文件。

我可以通過Interop保存文件作為制表符分隔,但這假設我知道給定的頁面名稱是什么。 我被告知每個頁面名稱都不遵循嚴格的命名約定,但在查找所需名稱時,我可以考慮多個名稱,如“RCP”,“rcp”,“收件人”等。

我的問題是,我可以在某種索引中獲取所有電子表格頁面名稱,以便我可以遍歷它們並嘗試找到我需要的三個名稱嗎? 這比嘗試通過bajillion嘗試/捕獲來獲取“RCP”,“rcp”,“收件人”頁面要好得多。

我很接近,因為我可以通過以下方式在Excel電子表格中獲取COUNT個頁面:

Excel.Application excelApp = new Excel.Application();  // Creates a new Excel Application
excelApp.Visible = true;  // Makes Excel visible to the user.           
// The following code opens an existing workbook
string workbookPath = path;
Excel.Workbook excelWorkbook = null;
try
{
    excelWorkbook = excelApp.Workbooks.Open(workbookPath, 0,
    false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true,
    false, 0, true, false, false);
}
catch
{
    //Create a new workbook if the existing workbook failed to open.
    excelWorkbook = excelApp.Workbooks.Add();
}
// The following gets the Worksheets collection
Excel.Sheets excelSheets = excelWorkbook.Worksheets;
Console.WriteLine(excelSheets.Count.ToString()); //dat count

感謝您的時間。

foreach ( Worksheet worksheet in excelWorkbook.Worksheets )
{
   MessageBox.Show( worksheet.Name );
}

你可以使用字典:

Dictionary<string, Worksheet> dict = new Dictionary<string, Worksheet>();
foreach ( Worksheet worksheet in excelWorkbook.Worksheets )
{
   dict.Add( worksheet.Name, worksheet );
}
// accessing the desired worksheet in the dictionary
MessageBox.Show( dict[ "Sheet1" ].Name );

暫無
暫無

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

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