2013-03-18 5 views
0

У меня есть файл excel с именем test.xls, и я хочу получить содержимое в листе excel в Dataset. Возможно, Я попробовал код, но он бросает исключение, вот мой кодВозьмите содержимое файла excel (.xls или .xlsx) в Dataset

string FilePath = Server.MapPath("portals\\_default") + "\\" + upprice.FileName; 
upprice.PostedFile.SaveAs(FilePath); 
FileStream stream = File.Open(FilePath, FileMode.Open, FileAccess.Read); 
if (upprice.FileName.Contains(".xlsx")) 
{ 
    IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream); 
    DataSet result = excelReader.AsDataSet(); 
} 
+1

Можете ли вы опубликовать данные об исключениях? –

+1

Вы можете использовать адаптер OLE со ссылкой на электронную таблицу Excel в своей строке подключения и запросить его, как и любой другой SQL-файл. См. Этот ответ: http://stackoverflow.com/questions/4942464/excel-to-datatable –

+0

@jacob .. Я попытался это решение .. показывает ошибку – Anilkumar

ответ

2

Я буду считать, что вы используете этот http://exceldatareader.codeplex.com/

из кода:

if (upprice.FileName.Contains(".xlsx")) 
{ 
    IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream); 
    DataSet result = excelReader.AsDataSet(); 
} 
else if (upprice.FileName.Contains(".xls")) 
{ 
    IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); 
    DataSet result = excelReader.AsDataSet(); 
} 

эти тесты backw ОРДС. Файлы «.xlsx» - это zml-документы. «xls» - это старые двоичные файлы. Также рассмотрите использование System.IO.Path.GetExtension(), чтобы получить расширение файла, так как вы заметите, что Contains (". Xls") истинно для обоих типов файлов.

+0

Я бы сказал, что вам нужно использовать CreateBinaryReader для XLS и CreateOpenXmlReader для XLSX , – Vad

Смежные вопросы