Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 未按默认顺序检索Excel工作表_C#_Excel - Fatal编程技术网

C# 未按默认顺序检索Excel工作表

C# 未按默认顺序检索Excel工作表,c#,excel,C#,Excel,当我试图从C#代码中读取excel工作表名称时,它会按字母顺序返回它们。我真的需要他们按照正常的顺序 这是因为我有一个场景,用户需要输入一个工作表编号,然后根据该编号,我需要处理该工作表结果。但是,当我阅读代码时,它肯定会按字母顺序返回表单,如何才能按正常顺序获得这些表单名称 对于获取图纸名称,我们使用的代码如下 sheetNamesDT = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null); 根据MSDN,对于Excel中的电子

当我试图从
C#
代码中读取excel工作表名称时,它会按字母顺序返回它们。我真的需要他们按照正常的顺序

这是因为我有一个场景,用户需要输入一个工作表编号,然后根据该编号,我需要处理该工作表结果。但是,当我阅读代码时,它肯定会按字母顺序返回表单,如何才能按正常顺序获得这些表单名称

对于获取图纸名称,我们使用的代码如下

sheetNamesDT = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null);

根据MSDN,对于Excel中的电子表格,它可能无法工作,因为Excel文件不是真实的数据库。因此,您将无法按工作表在工作簿中的可视化顺序获取工作表名称

使用interop根据图纸的视觉外观获取图纸名称的代码:

添加对Microsoft Excel 12.0对象库的引用

以下代码将按照工作簿中存储的实际顺序给出工作表名称,而不是排序后的名称,但为此,您需要在该计算机上安装office

示例代码:

using Microsoft.Office.Interop.Excel;

string filename = "C:\\romil.xlsx";

object missing = System.Reflection.Missing.Value;

Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();

Microsoft.Office.Interop.Excel.Workbook wb =excel.Workbooks.Open(filename,  missing,  missing,  missing,  missing,missing,  missing,  missing,  missing,  missing,  missing,  missing,  missing,  missing,  missing);

ArrayList sheetname = new ArrayList();

foreach (Microsoft.Office.Interop.Excel.Worksheet  sheet in wb.Sheets)
{
    sheetname.Add(sheet.Name);
}

根据MSDN,对于Excel中的电子表格,它可能无法工作,因为Excel文件不是真实的数据库。因此,您将无法按工作表在工作簿中的可视化顺序获取工作表名称

使用interop根据图纸的视觉外观获取图纸名称的代码:

添加对Microsoft Excel 12.0对象库的引用

以下代码将按照工作簿中存储的实际顺序给出工作表名称,而不是排序后的名称,但为此,您需要在该计算机上安装office

示例代码:

using Microsoft.Office.Interop.Excel;

string filename = "C:\\romil.xlsx";

object missing = System.Reflection.Missing.Value;

Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();

Microsoft.Office.Interop.Excel.Workbook wb =excel.Workbooks.Open(filename,  missing,  missing,  missing,  missing,missing,  missing,  missing,  missing,  missing,  missing,  missing,  missing,  missing,  missing);

ArrayList sheetname = new ArrayList();

foreach (Microsoft.Office.Interop.Excel.Worksheet  sheet in wb.Sheets)
{
    sheetname.Add(sheet.Name);
}
参见下面的问题参见下面的问题