Вставить фиктивную строку в экземпляр OleDbDataAdapter

У меня есть лист Excel, из которого я читаю данные, и я использую OleDbDataAdapter.Fill для заполнения DataTable данными листа. Проблема, с которой я сталкиваюсь, заключается в том, что ячейки с количеством символов более 256 обрезаются. Я провел небольшое исследование и обнаружил, что если в первых 8 строках нет строк длиннее 256 символов, все последующие ячейки будут обрезаны. Чтобы исправить это, я пытаюсь вставить фиктивную строку в самом начале с longText, вставленным в столбец, который обрезается. Как лучше всего это сделать? Я пробовал использовать свойство da.InsertCommand.CommandText, но кажется, что оно вставляется только в конец таблицы. Вот мой код:

string longText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Consectetur a erat nam at. Elementum integer enim neque volutpat ac tincidunt vitae semper quis. Risus in hendrerit gravida rutrum quisque non. Amet luctus venenatis lectus magna fringilla. Lacus sed viverra tellus in hac habitasse platea dictumst vestibulum. Lectus magna fringilla urna porttitor rhoncus dolor purus non enim. Nulla aliquet porttitor lacus luctus. Massa id neque aliquam vestibulum morbi blandit. Aliquet nibh praesent tristique magna sit amet purus gravida quis. Senectus et netus et malesuada fames ac turpis egestas. Platea dictumst vestibulum rhoncus est pellentesque elit ullamcorper. Donec ac odio tempor orci. Mauris ultrices eros in cursus turpis massa tincidunt dui. Quis ipsum suspendisse ultrices gravida. Dictum non consectetur a erat nam at lectus. Nam at lectus urna duis convallis convallis. In dictum non consectetur a erat nam at. Risus nec feugiat in fermentum posuere urna nec.";

da = new OleDbDataAdapter("SELECT * FROM [" + tableName + "]", connection);

// I would like to insert a row at the very beginning of da here

da.Fill(dt);

person m0kova01    schedule 24.07.2020    source источник
comment
Вставьте его в dt после того, как вы его заполните.   -  person LarsTech    schedule 24.07.2020
comment
@LarsTech К сожалению, команда da.Fill() обрезает значения, поэтому я должен сделать это до того, как она выполнится. Если вставить строку после, значения уже обрезаются.   -  person m0kova01    schedule 24.07.2020
comment
Как только он заполнен, у вас есть DataTable, с которым вы можете делать то, что хотите. Не обращайте внимания на адаптер.   -  person LarsTech    schedule 24.07.2020


Ответы (1)


Используйте пакет ExcelReader Nuget.

FileStream stream = File.Open(strFileName, FileMode.Open,
FileAccess.Read);   
IExcelDataReader excelReader =
ExcelReaderFactory.CreateOpenXmlReader(stream);   
DataSet result = excelReader.AsDataSet();  
DataTable dt= result.Tables[0]; 
excelReader.Close();
person zia khan    schedule 24.07.2020