我在Excel表格中检索列名称时遇到问题。
我有一张Excel表格,第一行只有3个单元格,包含以下3个值:
:A
在B1:B
:A.B.C
当我尝试执行我的方法时,标签显示:
而不是:
我的代码:
protected void btnExecute_Click(object sender, EventArgs e)
{
string fullFileName = @"C:\TEST.xls";
List<string> columns = new List<string>();
string connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;", fullFileName);
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
conn.Open();
// Retrieves the first sheet
DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string firstSheet = dt.Rows[0]["TABLE_NAME"].ToString();
// Retrieves the list column name
string query = string.Format("SELECT TOP 1 * FROM [{0}]", firstSheet);
OleDbCommand cmd = new OleDbCommand(query, conn);
OleDbDataReader reader = cmd.ExecuteReader();
for (int i = 0; i < reader.FieldCount; i++)
{
columns.Add(reader.GetName(i));
}
}
lblCols.Text = string.Join(",", columns.ToArray());
}
你有想法解决这个问题吗?
提前致谢。
丹尼尔
答案 0 :(得分:0)
尝试通过堆栈溢出发布的OleDBAdapter Excel QA。
我刚测试了这个,它从你描述的样本.xls中拾取了“A.B.C” 即将以下内容添加到底部以进行快速测试:
Object o = ds.Tables["xlsImport"].Rows[0]["LocationID"];
Object oa = ds.Tables["xlsImport"].Rows[0]["PartID"];
Object row0Col3 = ds.Tables["xlsImport"].Rows[0][2];
string valLocationID = o.ToString();
string valPartID = oa.ToString();
string rowZeroColumn3 = row0Col3.ToString();