我正在尝试使用asp.net和C#导入excel文件。我在VB中找到了一个例子,但它使用了一个名为“Server.MapPath”的东西,它没有解析为命名空间。我在.NET 4.0,C#和Windows XP上。我找到了一个“HttpServerUtility.MapPath”,但我不知道这是否等同于IIS7?
C#
public OleDbCommand ExcelConnection()
{
string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Server.MapPath("~/ExcelImport.xls") + ";" + "Extended Properties=Excel 8.0;";
//create your excel connection object using the connection string
OleDbConnection ocnct = new OleDbConnection(conStr);
ocnct.Open();
//use a SQL Select command to retrieve the data from the Excel Spreadsheet
//the "table name" is the name of the worksheet within the spreadsheet
//in this case, the worksheet name is "Members" and is coded as: [Members$]
OleDbCommand ocmd = new OleDbCommand("SELECT * FROM [Members$]", ocnct);
return ocmd;
}
Online示例
受保护的函数ExcelConnection()作为OleDbCommand
' Connect to the Excel Spreadsheet
Dim xConnStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("~/ExcelImport.xls") & ";" & _
"Extended Properties=Excel 8.0;"
' create your excel connection object using the connection string
Dim objXConn As New OleDbConnection(xConnStr)
objXConn.Open()
' use a SQL Select command to retrieve the data from the Excel Spreadsheet
' the "table name" is the name of the worksheet within the spreadsheet
' in this case, the worksheet name is "Members" and is coded as: [Members$]
Dim objCommand As New OleDbCommand("SELECT * FROM [Members$]", objXConn)
Return objCommand
结束功能
答案 0 :(得分:1)
Server.MapPath
获取应用程序相对路径(以~
开头)并将其转换为磁盘上的完整路径。
它是Server
对象(HttpServerUtility
类的一个实例)的成员,可以在HttpContext
以及页面或用户控件上找到。
如果您已经拥有磁盘上的完整路径,则不需要它。
答案 1 :(得分:1)
HttpContext
和Page
类都有一个名为Server
的属性,它返回HttpServerUtility
个对象(事实上,Page
只调用return this.Context.Server
})。
因此Server.MapPath
HttpServerUtility.MapPath
。
它需要一个字符串并计算它对应的文件路径,如果该字符串是由应用程序处理的URI与文件系统之间的开箱即用映射支持的相对URI(如果你已经它为你处理的复杂虚拟目录映射)添加了一个特性,如果你以波浪号~
开头,那么它认为它是相对于应用程序根的。)
如果您在此过程中进行了一些重新映射,则它可能会失败,其值既不是相对于应用程序根目录(以~
开头),也不是站点根目录(以/
开头)如果你在路上做了一些重新映射,那可能不是你的担心。