Excel возвращает даты вместо вычисленного значения

Поэтому у меня есть импортер excel, который берет данные с листа Excel и заполняет DataTable, а затем вставляю его в таблицу SQL. Я использовал его для тысяч импорта, но для этого листка он не вытащит правильное значение ячейки из рабочего листа. Моя функция возвращает значение «1/4/1900 7:42:25 AM», когда ячейка фактически содержит «$ 4.32» и возвращает пустое значение заголовка ячейки «Цена за единицу». Формула для ячейки – это что-то вроде «= (J9 * (1-K9) * (1-M9))». Весь столбец отформатирован как «Валюта».

Я понятия не имею, что происходит, поэтому любое понимание понимается.

Код для получения листа Excel -> DataTable:

DataTable dt; try { if (FileInUse(filename)) { e.Result = false; Core.ShowExclamation("The file is already open. Please save and close the file before continuing."); return; } OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filename + @";Extended Properties=""Excel 12.0;HDR=NO;"""); string sheet = GetExcelSheetNames(con)[0]; OleDbDataAdapter da = new OleDbDataAdapter("select * from [" + sheet + "]", con); dt = new DataTable(); da.Fill(dt); } 

Код для возврата некоторых значений:

  string foo = dt.Rows[5][13].ToString() + "\r\n"; foo += dt.Rows[6][13].ToString() + "\r\n"; foo += dt.Rows[7][13].ToString() + "\r\n"; foo += dt.Rows[8][13].ToString() + "\r\n"; foo += dt.Rows[9][13].ToString() + "\r\n"; foo += dt.Rows[10][13].ToString(); Core.ShowInfo(foo); 

 Returns: Should Returns: 12/30/1899 12:00:00 AM 0.00% 9/27/2013 12:00:00 AM 9/27/2013 {} Reseller Price Per Unit 1/4/1900 7:42:25 AM $4.32 1/4/1900 7:42:25 AM $4.32 3/10/1901 10:23:42 AM $435.43 

Наконец, нашел эту статью из вопроса, заданного Øyvind Knobloch-Bråthen

http://neosblogs.blogspot.com/2008/06/how-jet-ole-db-decide-excel-column-type.html

Исправление:

 OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filename + @";Extended Properties=""Excel 12.0;HDR=NO;IMEX=1"""); 

Просто нужно было установить « IMEX = 1 »

  • Excel Automation: прочитайте файл csv и обновите файл Excel
  • Преобразование документов Excel 2010?
  • Получение списка из двух списков
  • Создайте файл Excel и сохраните его как PDF.
  • Измените цвет ячейки, используя условное форматирование с помощью Epplus
  • Сообщение ReportINI.xls при создании новой книги Excel.Workbook с Microsoft.Office.Interop.Excel в C #
  • Получение скаляра из файла excel
  • Использование Excel для клиента сайта Asp.Net MVC
  • Откройте файл .xls / .xlsx через веб-браузер и сделайте его редактируемым для пользователя.
  • Фоновый процесс Excel не закрывается
  • Получение стилей границ Excel в C #
  • Давайте будем гением компьютера.