我正在尝试从Excel(xls)电子表格导入数据。如果标题行中出现重复值,我需要抛出一个错误。我正在使用OleDbDataReader来提取工作表数据。我遇到的问题是.Net在重复列的末尾附加一个唯一的整数,以便所有值都是唯一的。
标头值在运行时将是未知的。如果找到重复的标头值,则应停止处理该文件。
例如,包含以下标题的电子表格: 制作,模型,年份,制作 将显示为: Make,Model,Year,Make1
以下是一些代码:
string selectString = "Select * from $Sheet1";
xlConnection = new OleDbConnection(connectionString);
OleDbCommand cmd = new OleDbCommand(selectString, xlConnection);
OleDbDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
for (int fieldIndex = 0; fieldIndex < reader.FieldCount; fieldIndex++)
{
string columnValue = reader.GetName(fieldIndex);
}
}
GetName返回Make,Model,Year,Make1
有没有办法防止这种行为?
答案 0 :(得分:2)
考虑使用:
string selectString = "Select Make, Model, Year from $Sheet1";
而不是:
string selectString = "Select * from $Sheet1";
答案 1 :(得分:0)
我有同样的要求并面临同样的挑战。
我通过修改连接字符串来设置HDR = NO来解决它。然后选择第一行并循环遍历每列中的值以检查唯一性。如果我找到匹配项,我会抛出DuplicatNameException以与DataTable保持一致。
希望这有帮助。