用C#-选择工作表读取Excel文件
我正在读一个带有C#和OleDB(12.0)的excel文件。在这里,我必须指定select语句以及我希望阅读的工作表的名称(用C#-选择工作表读取Excel文件,c#,.net,excel,oledb,C#,.net,Excel,Oledb,我正在读一个带有C#和OleDB(12.0)的excel文件。在这里,我必须指定select语句以及我希望阅读的工作表的名称([Sheet1$]) 无论名称如何,是否可以选择第一张图纸 谢谢。有关如何按顺序获取图纸名称列表,请参见以下答案: 这是我的版本,略短一些: public static IEnumerable<string> GetExcelSheetNames(string excelFile) { var connectionString = "Provider=
[Sheet1$]
)
无论名称如何,是否可以选择第一张图纸
谢谢。有关如何按顺序获取图纸名称列表,请参见以下答案: 这是我的版本,略短一些:
public static IEnumerable<string> GetExcelSheetNames(string excelFile)
{
var connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + excelFile + ";Extended Properties=Excel 8.0;";
using (var connection = new OleDbConnection(connectionString))
{
connection.Open();
using (var dt = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null))
{
return (dt ?? new DataTable())
.Rows
.Cast<DataRow>()
.Select(row => row["TABLE_NAME"].ToString());
}
}
}
公共静态IEnumerable GetExcelSheetNames(字符串excelFile)
{
var connectionString=“Provider=Microsoft.Jet.OLEDB.4.0;”+
“数据源=“+excelFile+”;扩展属性=Excel 8.0;”;
使用(var连接=新的OLEDB连接(connectionString))
{
connection.Open();
使用(var dt=connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null))
{
返回(dt??新数据表())
.行
.Cast()
.Select(row=>row[“TABLE_NAME”].ToString());
}
}
}
有关如何按顺序获取图纸名称列表,请参见以下答案:
这是我的版本,略短一些:
public static IEnumerable<string> GetExcelSheetNames(string excelFile)
{
var connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + excelFile + ";Extended Properties=Excel 8.0;";
using (var connection = new OleDbConnection(connectionString))
{
connection.Open();
using (var dt = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null))
{
return (dt ?? new DataTable())
.Rows
.Cast<DataRow>()
.Select(row => row["TABLE_NAME"].ToString());
}
}
}
公共静态IEnumerable GetExcelSheetNames(字符串excelFile)
{
var connectionString=“Provider=Microsoft.Jet.OLEDB.4.0;”+
“数据源=“+excelFile+”;扩展属性=Excel 8.0;”;
使用(var连接=新的OLEDB连接(connectionString))
{
connection.Open();
使用(var dt=connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null))
{
返回(dt??新数据表())
.行
.Cast()
.Select(row=>row[“TABLE_NAME”].ToString());
}
}
}
这是可行的,但请注意,它似乎还返回了除工作表以外的其他内容,因此您可能需要过滤掉这些内容(我现在记不起来了,但我认为列表中也显示了命名范围或类似内容)。谢谢。顺便说一句,“Extended Properties=Excel 8.0”没有打开xlsx,必须使用“Extended Properties=Excel 12.0”。这是可行的,但请注意,它似乎还返回其他内容,而不仅仅是工作表,因此您可能必须过滤掉这些内容(我现在记不起来了,但我认为它是命名范围或类似于列表中显示的内容)谢谢顺便说一句,“ExtendedProperties=Excel8.0”不会打开xlsx,必须使用“ExtendedProperties=Excel12.0”。