Ограничения имени столбца DataTable?

Я пытаюсь прочитать данные из файла Excel в DataSet, но моя проблема в том, что имена столбцов DataTable не соответствуют тому, что есть в моем Excel. Кажется, это только столбцы с длинными именами столбцов. В именах столбцов 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?

Любая помощь/предложения будут оценены.


person Shiasu-sama    schedule 05.05.2019    source источник


Ответы (1)


64 символа необычно длинные для имени столбца базы данных. Я никогда не видел, чтобы имя столбца приближалось к такой длине.

Кажется странным, что у вас такое длинное имя столбца.

Конечно, они должны где-то храниться, и поэтому, вероятно, будет максимум для любого программного обеспечения базы данных, например, SQL-сервер имеет максимум 128. Меня не удивит, если промежуточное программное обеспечение, такое как sqlclient, будет иметь более низкий предел. Очень длинные имена — это так необычно.

Возможно, это ограничение адаптера.

Вы можете попробовать некоторые из альтернатив, упомянутых в этой теме:

Лучший/самый быстрый способ чтения листа Excel в таблица данных?

Или, может быть, вы можете просто работать с 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 I

person Andy    schedule 05.05.2019