使用 C# 互操作从 Excel 中获取纯文本格式的所有工作表名称

本文关键字:工作 格式 文本 互操作 Excel 获取 使用 | 更新日期: 2023-09-27 18:31:08

我正在使用VS2010 + Office Interop 2007尝试从5-6页的Excel电子表格中获取一些特定的电子表格名称。 我所做的只是将我需要的那几个电子表格保存在制表符分隔的文本文件中以供进一步处理。 因此,对于我得到的三个电子表格名称,每个名称都有自己的制表符分隔的文本文件。

我可以通过互操作将文件保存为制表符分隔,但前提是我知道给定的页面名称是什么。 我被告知每个页面名称都不会遵循严格的命名约定,但是在寻找所需的名称时,我可以考虑多个名称,例如"RCP","rcp","收件人"等。

我的问题是,我可以在某种索引中获取所有电子表格页面名称,以便我可以循环访问它们并尝试找到我需要的三个名称吗? 这比试图通过大量尝试/捕获来抓取"RCP"、"rcp"、"收件人"页面要好得多。

我很接近,因为我可以通过以下内容获取 Excel 电子表格中的页数:

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

谢谢你的时间。

使用 C# 互操作从 Excel 中获取纯文本格式的所有工作表名称

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 );