gpt4 book ai didi

c# - 包含 '.' 的 Excel 列名称转换为 '#'

转载 作者:行者123 更新时间:2023-12-04 21:33:43 27 4
gpt4 key购买 nike

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

以下是代码:

public DataSet ConnectExcel(string filetable)
{
DataSet ds = new DataSet(TABLE_NAME);
string excelConnectionString;
string extension = Path.GetExtension(filetable);

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

System.Data.OleDb.OleDbConnection oleDBCon = new System.Data.OleDb.OleDbConnection(excelConnectionString);

try
{
if (oleDBCon.State == ConnectionState.Open)
{
//lblResult.Text = "file is in open state. Please close the file.";
}
else
{
oleDBCon.Open();
DataTable Sheets = oleDBCon.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
foreach (DataRow dr in Sheets.Rows)
{
string sht = dr[2].ToString().Replace("'", "");
System.Data.OleDb.OleDbDataAdapter dataAdapter = new System.Data.OleDb.OleDbDataAdapter("select * from [" + sht + "]", oleDBCon);

try
{
dataAdapter.Fill(ds);
ds.Tables[0].TableName = TABLE_NAME;
ds.AcceptChanges();
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
finally
{
dataAdapter.Dispose();
}
}
}
}
catch (Exception e) //Error
{
MessageBox.Show(e.Message);
}
finally
{
if (oleDBCon.State == ConnectionState.Open)
oleDBCon.Close();
oleDBCon.Dispose();
}
return ds;
}

最佳答案

您在这里有几个选择。

在您的原始数据中,您可以输入 '在您不想转换的任何值之前。

您还可以单击 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);
}

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

关于c# - 包含 '.' 的 Excel 列名称转换为 '#',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45136842/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com