DataTable ColumnName 限制?
DataTable ColumnName Limitations?
我正在尝试将 Excel 文件中的数据读入 DataSet
,但我的问题是 DataTable
列名称与我的 [=32] 中的内容不匹配=].它似乎只是具有长列名称的列。在 DataTable
列名称中,它在某个点被切断。
这是我的尝试:
DataSet mainExcelDataToImport = new DataSet();
using (OleDbConnection mainExcelOleDbConnection = new OleDbConnection())
{
string theMainExcelConnectionString = this.ExcelConnectionString.Replace("{FullFilePath}", this.SelectedFilePath);
mainExcelOleDbConnection.ConnectionString = theMainExcelConnectionString;
// Open
mainExcelOleDbConnection.Open();
string mainExcelSQL = "SELECT * FROM [{ExcelSheet}$]";
mainExcelSQL = mainExcelSQL.Replace("{ExcelSheet}", selectedExcelSheet);
using (OleDbCommand mainExcelOleDbCommand = mainExcelOleDbConnection.CreateCommand())
{
mainExcelOleDbCommand.CommandText = mainExcelSQL;
mainExcelOleDbCommand.CommandType = CommandType.Text;
// Prepare
mainExcelOleDbCommand.Prepare();
using (OleDbDataAdapter mainOleDbDataAdapter = new OleDbDataAdapter(mainExcelOleDbCommand))
{
mainOleDbDataAdapter.Fill(mainExcelDataToImport);
// Close
mainExcelOleDbConnection.Close();
}
}
}
这是我试过的 .xlsx:
A1234567890123456789012345678901234567890123456789012345678901234567890
TEST
'A12345.....' is the Column Name at A1
'TEST' is the Value at A2
When I check the `ColumnName` in the `DataTable` I get: 'A123456789012345678901234567890123456789012345678901234567890123' which is 64 characters.
ColumnName
MaxLength
限制如何运作?
我可以摆脱它吗?
可能是 OleDbDataAdapter
的限制?
如有任何帮助/建议,我们将不胜感激。
64 个字符对于数据库列的名称而言异常长。我从未见过任何接近该长度的列名。
这么长的列名似乎很奇怪。
它们当然必须存储在某个地方,因此任何数据库软件都可能有最大值,例如 SQL 服务器的最大值为 128。如果像 sqlclient 这样的中间软件有一个下限。很长的名字很不寻常。
这可能是适配器的限制。
您可以尝试此线程中提到的一些替代方案:
Best /Fastest way to read an Excel Sheet into a DataTable?
或者您可以只使用 xml - 而不是数据表。
Xml 将能够处理 excel 可以处理的任何大小的字段。
https://docs.microsoft.com/en-us/office/open-xml/understanding-the-open-xml-file-formats
https://docs.microsoft.com/en-us/office/open-xml/how-to-parse-and-read-a-large-spreadsheet
我
我正在尝试将 Excel 文件中的数据读入 DataSet
,但我的问题是 DataTable
列名称与我的 [=32] 中的内容不匹配=].它似乎只是具有长列名称的列。在 DataTable
列名称中,它在某个点被切断。
这是我的尝试:
DataSet mainExcelDataToImport = new DataSet();
using (OleDbConnection mainExcelOleDbConnection = new OleDbConnection())
{
string theMainExcelConnectionString = this.ExcelConnectionString.Replace("{FullFilePath}", this.SelectedFilePath);
mainExcelOleDbConnection.ConnectionString = theMainExcelConnectionString;
// Open
mainExcelOleDbConnection.Open();
string mainExcelSQL = "SELECT * FROM [{ExcelSheet}$]";
mainExcelSQL = mainExcelSQL.Replace("{ExcelSheet}", selectedExcelSheet);
using (OleDbCommand mainExcelOleDbCommand = mainExcelOleDbConnection.CreateCommand())
{
mainExcelOleDbCommand.CommandText = mainExcelSQL;
mainExcelOleDbCommand.CommandType = CommandType.Text;
// Prepare
mainExcelOleDbCommand.Prepare();
using (OleDbDataAdapter mainOleDbDataAdapter = new OleDbDataAdapter(mainExcelOleDbCommand))
{
mainOleDbDataAdapter.Fill(mainExcelDataToImport);
// Close
mainExcelOleDbConnection.Close();
}
}
}
这是我试过的 .xlsx:
A1234567890123456789012345678901234567890123456789012345678901234567890
TEST
'A12345.....' is the Column Name at A1
'TEST' is the Value at A2
When I check the `ColumnName` in the `DataTable` I get: 'A123456789012345678901234567890123456789012345678901234567890123' which is 64 characters.
ColumnName
MaxLength
限制如何运作?
我可以摆脱它吗?
可能是 OleDbDataAdapter
的限制?
如有任何帮助/建议,我们将不胜感激。
64 个字符对于数据库列的名称而言异常长。我从未见过任何接近该长度的列名。
这么长的列名似乎很奇怪。
它们当然必须存储在某个地方,因此任何数据库软件都可能有最大值,例如 SQL 服务器的最大值为 128。如果像 sqlclient 这样的中间软件有一个下限。很长的名字很不寻常。
这可能是适配器的限制。
您可以尝试此线程中提到的一些替代方案:
Best /Fastest way to read an Excel Sheet into a DataTable?
或者您可以只使用 xml - 而不是数据表。 Xml 将能够处理 excel 可以处理的任何大小的字段。
https://docs.microsoft.com/en-us/office/open-xml/understanding-the-open-xml-file-formats https://docs.microsoft.com/en-us/office/open-xml/how-to-parse-and-read-a-large-spreadsheet 我