Читать данные из Excel - PullRequest
       23

Читать данные из Excel

5 голосов
/ 22 марта 2011

Я пытался прочитать данные из файла Excel. Это было успешно, но я столкнулся с проблемой. Если формат ячейки и введенные в нее данные не совпадают, я получаю пустые данные


* 1005 например *

Если ячейка данных отформатирована как Дата - dd/mm/yyyy, а пользователь вводит 13/17/2011, то формат даты и введенная дата противоречивы, поэтому в Excel появляется пустая ячейка. Только если формат ячейки текстовый, я получаю введенные данные.

Почему в файле excel отображается пустая ячейка, если введенный формат даты не соответствует установленному формату ячейки?

Это код, который читает данные Excel

if(fileEXT.Equals(".xls"))
{
   oledbConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("../Portal_Docs/UploadDocs/"+filename+"")+";Extended Properties=Excel 8.0");
}
else if(fileEXT.Equals(".xlsx"))
{
   oledbConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+Server.MapPath("../Portal_Docs/UploadDocs/"+filename+"")+";Extended Properties=\"Excel 12.0;HDR=YES;\"");
}
else if(fileEXT.Equals(".xlsm"))
{
   oledbConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+Server.MapPath("../Portal_Docs/UploadDocs/"+filename+"")+";Extended Properties=Excel 12.0 Macro");
}

oledbConn.Open();
OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Sheet1$]", oledbConn);
OleDbDataAdapter oleda = new OleDbDataAdapter();
oleda.SelectCommand = cmd;
DataSet ds = new DataSet();
oleda.Fill(ds,"LocationDetails");

Ответы [ 2 ]

2 голосов
/ 07 июня 2011

Вы можете изменить строку подключения на

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("../Portal_Docs/UploadDocs/"+filename+"")+";Extended Properties=Excel 8.0;HDR=Yes;IMEX=1"

HDR = Yes; IMEX = 1

сообщает драйверу OldDb, что данные в столбцах в разном формате.

0 голосов
/ 03 ноября 2012

Вместо OLEDB я бы предложил использовать библиотеку EPPLus для обработки ваших файлов Excel. Это очень просто и полно. Пакет Nuget также доступен для того же. http://nuget.org/packages/EPPlus

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...