Search code examples
c#asp.netdatatableoledboledbdataadapter

Insert Dummy Row Into OleDbDataAdapter Instance


I have an excel sheet that I'm reading data from, and I'm using OleDbDataAdapter.Fill to populate a DataTable with the sheet data. The problem I'm having is that cells with character counts over 256 are getting cut off. I did a little research and found that if there are no strings greater than 256 characters in the first 8 rows, any cells after will get cut short. To fix this, I'm attempting to insert a dummy row at the very beginning with longText inserted into the column that is getting cut off. What would be the best way to do this? I've tried using the da.InsertCommand.CommandText property, but it only seems to insert at the end of the table. Here is my code:

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);

Solution

  • Use ExcelReader Nuget Package

    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();