#.net #asp.net
#.net #asp.net
Вопрос:
Я должен импортировать информацию из электронных таблиц Excel в объект .net для чтения и сохранения некоторых данных. Я выполнил импорт пространства имен и знаю, как создавать объекты Excel. Но я не знаю, как установить файл (загруженный через объект FileUpload) на этот объект. Спасибо.
Ответ №1:
Один из способов, которым вы могли бы продолжить это, — сохранить файл с помощью FileUpload.Метод SaveAs() и чтение его с помощью библиотеки взаимодействия Excel (Microsoft.Офис.Взаимодействие.Excel). Вот так:
ApplicationClass app = new ApplicationClass();
// Open Excel File
Workbook = app.Workbooks.Open(path_to_file_uploaded,
0,
true,
5,
"",
"",
true,
XlPlatform.xlWindows,
"t",
false,
false,
0,
true,
1,
0);
PD: Я полагаю, что вы могли бы искать другой, более прямой способ сделать это без необходимости сохранения на диск. Если да, дайте мне знать, чтобы узнать, смогу ли я найти способ сделать это.
Ответ №2:
Используйте OleDbConnection для чтения содержимого файла:
Using cnn As New System.Data.OleDb.OleDbConnection(connectionString)
Using cmd = cnn.CreateCommand
cmd.CommandText = "SELECT * FROM [" amp; sheetName amp; "]"
Using dr = cmd.ExecuteReader
While dr.Read
Dim item = New With {.firstName = dr(0), .lastName = dr(1)}
End While
End Using
End Using
End Using
для строки подключения используйте:
//Excel 2003:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" amp; uploadedFilePath amp; ";Extended Properties=""Excel 8.0; HDR=Yes"""
//or
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" amp; uploadedFilePath amp; ";Extended Properties=""Excel 8.0; HDR=Yes"""
//Excel 2007:
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" amp; uploadedFilePath amp; ";Extended Properties=""Excel 12.0; HDR=Yes"""
//Excel 2010:
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" amp; uploadedFilePath amp; ";Extended Properties=""Excel 14.0; HDR=Yes"""
Помните об установке этого, если используете ACE (2007/2010):
http://www.microsoft.com/downloads/en/details.aspx ?FamilyID=c06b8369-60dd-4b64-a44b-84b371ede16d
Комментарии:
1. Это очень интересное решение. Это заслуживает голосования. Но таблица Excel, которую я получаю ежедневно, немного сложнее, и первый вариант был для меня наиболее подходящим.
2. @darth: спасибо. Если вам просто нужно прочитать данные, лучше использовать oledb. но если вам нужно сделать больше с вашим файлом Excel, вы можете использовать другие решения. Возможно, вам потребуется установить Excel для других решений, но чтение данных с помощью oledb является своего рода стандартным подходом.