2013-03-31 4 views
2

Я использую OleDbDataAdapter для чтения содержимого листа Excel в наборе данных. Лист Excel состоит из 20391 строк, набор данных считывает общее количество строк при его запуске на моем локальном компьютере, но при запуске кода на сервере IIS7.5 он считывает только ПЕРВЫЙ 12463!Заполнить DataSet от OleDbDataAdapter

Моя строка соединения:

switch (strFileType.Trim()) 
     { 
      case ".xls": 
       connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strNewPath + 
          ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\""; 
       break; 
      case ".xlsx": 
       connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strNewPath + 
          ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\""; 
       break; 
     } 

var query = "SELECT * FROM [" + excelSheets[0] + "]"; 

//Create the connection object 
var conn = new OleDbConnection(connString); 
//Open connection 
if (conn.State == ConnectionState.Closed) conn.Open(); 
//Create the command object 
var cmd = new OleDbCommand(query, conn); 
var da = new OleDbDataAdapter(cmd); 
var ds = new DataSet(); 
da.Fill(ds); 

Есть ли способ разделить da.Fill результат в нескольких DataTables?

+0

вы думаете, почему распространение данных в нескольких DataTables позволит решить проблему недостающих данных? Я предполагаю, что у вас есть другой файл excel на сервере. –

+0

вы можете использовать 'try-catch', чтобы проверить, произошло ли что-то во время заполнения набора данных? – lexeRoy

+0

@SteveWellens Я проверил файл на сервере и его же. Я забыл сказать, что он читает только ПЕРВЫЙ 12463. –

ответ

1

Я сделал то, что @dash предложил и использовал Excel Data Reader, и он работает правильно.

здесь код

 FileStream stream = File.Open(strNewPath , FileMode.Open, FileAccess.Read);    
     //1. Reading from a binary Excel file ('97-2003 format; *.xls) 
     //IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream); 
     //... 
     //2. Reading from a OpenXml Excel file (2007 format; *.xlsx) 
     IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);;      
     excelReader.IsFirstRowAsColumnNames = true; 
     DataSet result = excelReader.AsDataSet();