如何在.net中将Excel文件打开到Excel对象中?
我必须将Excel电子表格中的信息导入.net对象以读取和存储一些数据。我导入了名称空间,我知道如何创建Excel对象。但我不知道如何将文件(通过FileUpload对象加载)设置为此对象。谢谢。执行此操作的一种方法是使用FileUpload.SaveAs()方法保存文件,并使用Excel Interop库()读取文件。像这样:如何在.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
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读取数据是一种标准方法。