我目前面临一个问题,即我不知道如何修复它。
我将预编译的项目上传到IIS。这是我对此页面的目的:
@"~/PlanQuantityFile/"
。它确实上传成功。面临的问题:
当我的脚本尝试打开excel文件(用于提取数据)而不显示任何错误时,它会停止。在第881行,如图所示。
这是我寻求的几个方面,但它仍然无法解决我的问题。
可能的解决方案:
连接打开但从未关闭,因此连接断开。 (但我关闭它并且脚本在关闭语句之前停止运行)
32位程序调用64位局。 (我对硬件领域的知识有限,不知道我该怎么办才能排除故障)
权限问题。需要设置ASP.NET帐户的权限。 (我仍然找到ASP.NET帐户的对象名称)
感谢任何想要帮助的人。你的建议非常宝贵。
OleDbConnection oledbConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + SaveLocation + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1;';");
OleDbConnection connExcel = oledbConn;
OleDbCommand cmdExcel = new OleDbCommand();
OleDbDataAdapter oda = new OleDbDataAdapter();
DataTable dt = new DataTable();
cmdExcel.Connection = connExcel;
//Get the name of Sheet
try
{
connExcel.Open();// It stops here without showing errors.
}
catch (Exception ex)
{
ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + ex.Message + "');", true);
}
答案 0 :(得分:4)
以下代码返回所选文件位置源的数据表。请记住将工作表名称重命名为“Sheet1”。
使用命名空间:using System.Data.OleDb;
功能::::
public DataTable GetExcelinDatatable(string filelocation)
{
DataTable dt = new DataTable();
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filelocation + ";Extended Properties=\"Excel 8.0;HDR=YES;\"";
OleDbConnection con = new System.Data.OleDb.OleDbConnection(connectionString);
con.Open();
OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter("select * from [SHEET1$]", con);
da.Fill(dt);
con.Close();
return dt;
}
答案 1 :(得分:0)
你可以使用上面提到的函数来读取你只需要传递excel文件路径的Excel文件
private List<DataTable> readExcel(string strXLS)
{
//DataTable dtExcel = getExcelSheetTable();
List<DataTable> SheetsData = new List<DataTable>();
DataTable dtExcel = new DataTable();
DataTable SocialMediaExcel = new DataTable();
string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strXLS + ";Extended Properties=Excel 12.0;";
try
{
OleDbDataAdapter adpt = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connStr);
adpt.Fill(dtExcel);
SheetsData.Add(dtExcel);
}
catch (Exception ex)
{
throw ex;
}
return SheetsData;
}