Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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_Visual Studio 2013_Datatable_Oledbdataadapter - Fatal编程技术网

C# 包含“”的Excel列名已转换为“”

C# 包含“”的Excel列名已转换为“”,c#,excel,visual-studio-2013,datatable,oledbdataadapter,C#,Excel,Visual Studio 2013,Datatable,Oledbdataadapter,我正在导入一个excel文件,并试图将其导入数据集中。问题是,如果列名包含。例如,如果列名为Sr.No。导入后,数据集中显示的列名为Sr.No 代码如下: 你有几个选择 在原始数据中,您可以在不希望转换的任何值之前加一个 您还可以单击excel电子表格中的每一列,并将其数据类型从“常规”更改为所需的任何格式 第三个选项是在连接字符串中使用IMEX=1 if (extension == ".xls") { excelConnectionString = String.Format("Pro

我正在导入一个excel文件,并试图将其导入数据集中。问题是,如果列名包含。例如,如果列名为Sr.No。导入后,数据集中显示的列名为Sr.No

代码如下:


你有几个选择

在原始数据中,您可以在不希望转换的任何值之前加一个

您还可以单击excel电子表格中的每一列,并将其数据类型从“常规”更改为所需的任何格式

第三个选项是在连接字符串中使用IMEX=1

if (extension == ".xls")
{
    excelConnectionString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1;\"", strCSVFilePath);
}
else
{
     excelConnectionString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 xml;HDR=YES;IMEX=1;\"", strCSVFilePath);
}

如果更改连接字符串后仍有问题,则必须将HDR更改为NO,并将标题列视为字符串。在这种情况下,您可以使用第一行中的数据替换列名,即实际列名,然后使用ds.Tables[0].Rows.REMOVAT0从数据表中删除第一行

如果它是稳定的,那么您可以在DataSet中再次替换它们?您可以通过循环每个列来替换datatable中的列名column@satsvelke为什么需要循环每个列?@satsvelke@LeiYang我让用户选择他们想要查看的文件,因此,进行检查和替换a将不起作用,因为列名实际上可能包含a,我不应该将其更改为。@AdarshRavi您可以使用connection.GetSchemaTables来了解实际的工作表名称。我让用户选择要访问的文件,并在datagridview上显示该文件。因此,对文件进行任何更改以获得所需的输出都是不可行的。IMEX=1没有帮助。将HDR改为No会使我的第一列(即标题列)变成一个普通的数据单元,这也不是我想要的。你必须选择其中一个。您始终可以选择使用“dt.Rows.RemoveAt0”生成标题文本并从数据表中删除第一行`
if (extension == ".xls")
{
    excelConnectionString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1;\"", strCSVFilePath);
}
else
{
     excelConnectionString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 xml;HDR=YES;IMEX=1;\"", strCSVFilePath);
}