【问题标题】:DataTable ColumnName Limitations?数据表列名限制?
【发布时间】:2019-05-05 12:27:59
【问题描述】:

我正在尝试将 Excel 文件中的数据读入 DataSet,但我的问题是 DataTable 列名与我的 Excel 中的内容不匹配。它似乎只是具有长列名的列。在DataTable Column Names 中,它会在某些时候中断。

这是我的尝试:

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 的限制吗?

任何帮助/建议将不胜感激。

【问题讨论】:

    标签: c# wpf excel-interop oledbdataadapter datacolumn


    【解决方案1】:

    对于数据库列的名称来说,64 个字符异常长。我从来没有见过一个列名接近这个长度。

    你会有这么长的列名似乎很奇怪。

    它们当然必须存储在某个地方,因此任何数据库软件都可能有一个最大值,例如 SQL server 的最大值为 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

    【讨论】:

      猜你喜欢
      • 2012-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多