Как я могу открыть файл Excel в объекте Excel в .net?

#.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 является своего рода стандартным подходом.