如何在.net中将Excel文件打开到Excel对象中?

如何在.net中将Excel文件打开到Excel对象中?,.net,asp.net,.net,Asp.net,我必须将Excel电子表格中的信息导入.net对象以读取和存储一些数据。我导入了名称空间,我知道如何创建Excel对象。但我不知道如何将文件(通过FileUpload对象加载)设置为此对象。谢谢。执行此操作的一种方法是使用FileUpload.SaveAs()方法保存文件,并使用Excel Interop库()读取文件。像这样: ApplicationClass app = new ApplicationClass(); // Open Excel File Workbook = app.Wo

我必须将Excel电子表格中的信息导入.net对象以读取和存储一些数据。我导入了名称空间,我知道如何创建Excel对象。但我不知道如何将文件(通过FileUpload对象加载)设置为此对象。谢谢。

执行此操作的一种方法是使用FileUpload.SaveAs()方法保存文件,并使用Excel Interop库()读取文件。像这样:

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:我想您可能正在寻找其他更直接的方法来实现这一点,而不必保存到磁盘。如果是这样,请告诉我是否可以找到这样做的方法。

一种方法是使用FileUpload.SaveAs()方法保存文件,然后使用Excel Interop库()读取它。像这样:

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:我想您可能正在寻找其他更直接的方法来实现这一点,而不必保存到磁盘。如果是这样,请告诉我是否可以找到这样做的方法。

使用OLEDB连接读取文件内容:

    Using cnn As New System.Data.OleDb.OleDbConnection(connectionString)
        Using cmd = cnn.CreateCommand
            cmd.CommandText = "SELECT * FROM [" & sheetName & "]"

            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=" & uploadedFilePath & ";Extended Properties=""Excel 8.0; HDR=Yes"""

//or

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & uploadedFilePath & ";Extended Properties=""Excel 8.0; HDR=Yes"""

//Excel 2007:

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & uploadedFilePath & ";Extended Properties=""Excel 12.0; HDR=Yes"""

//Excel 2010:

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & uploadedFilePath & ";Extended Properties=""Excel 14.0; HDR=Yes"""
如果使用ACE(2007/2010),请记住安装此软件:


使用OLEDB连接读取文件内容:

    Using cnn As New System.Data.OleDb.OleDbConnection(connectionString)
        Using cmd = cnn.CreateCommand
            cmd.CommandText = "SELECT * FROM [" & sheetName & "]"

            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=" & uploadedFilePath & ";Extended Properties=""Excel 8.0; HDR=Yes"""

//or

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & uploadedFilePath & ";Extended Properties=""Excel 8.0; HDR=Yes"""

//Excel 2007:

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & uploadedFilePath & ";Extended Properties=""Excel 12.0; HDR=Yes"""

//Excel 2010:

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & uploadedFilePath & ";Extended Properties=""Excel 14.0; HDR=Yes"""
如果使用ACE(2007/2010),请记住安装此软件:


这是一个非常有趣的解决方案。它值得投票表决。但是我每天收到的excel表格有点棘手,第一个选项对我来说是最合适的方式。@darth:谢谢。如果您只需要读取数据,那么使用oledb更好。但是,如果您需要对excel文件进行更多操作,您可以使用其他解决方案。您可能需要为其他解决方案安装excel,但使用oledb读取数据是一种标准方法。这是一个非常有趣的解决方案。它值得投票表决。但是我每天收到的excel表格有点棘手,第一个选项对我来说是最合适的方式。@darth:谢谢。如果您只需要读取数据,那么使用oledb更好。但是,如果您需要对excel文件进行更多操作,您可以使用其他解决方案。您可能需要为其他解决方案安装excel,但使用oledb读取数据是一种标准方法。