C# 从OLEDB连接读取Excel文件数据
我目前面临一个问题,我不知道如何解决它 我将预编译的项目上载到IIS中。以下是我本页的目的:C# 从OLEDB连接读取Excel文件数据,c#,asp.net,excel,C#,Asp.net,Excel,我目前面临一个问题,我不知道如何解决它 我将预编译的项目上载到IIS中。以下是我本页的目的: 用户将excel文件上载到服务器中的文件夹中。ex@“~/PlanQuantityFile/”。它确实成功上传了 面临的问题: 当我的脚本试图打开excel文件(用于提取数据)而不显示任何错误时,它将停止。在第881行,如图所示 这里是我寻找的几个领域,但它仍然不能解决我的问题 可能的解决方案: 连接已打开,但从未关闭,因此连接耗尽。(但我确实关闭了它,脚本在close语句之前停止运行) 调用6
- 用户将excel文件上载到服务器中的文件夹中。ex
。它确实成功上传了@“~/PlanQuantityFile/”
- 当我的脚本试图打开excel文件(用于提取数据)而不显示任何错误时,它将停止。在第881行,如图所示
- 这里是我寻找的几个领域,但它仍然不能解决我的问题
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);
}
您可以使用上述函数读取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;
}
private List readExcel(字符串strXLS)
{
//DataTable dtExcel=getExcelSheetTable();
列表表数据=新列表();
DataTable dtExcel=新的DataTable();
DataTable SocialMediaExcel=新DataTable();
string connStr=“Provider=Microsoft.ACE.OLEDB.12.0;数据源=“+strXLS+”;扩展属性=excel12.0;”;
尝试
{
OleDbDataAdapter adpt=新的OleDbDataAdapter(“从[Sheet1$]中选择*”,connStr);
自动填充(dtExcel);
SheetsData.Add(dtExcel);
}
捕获(例外情况除外)
{
掷骰子;
}
返回数据;
}
您可以使用上述函数读取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;
}
private List readExcel(字符串strXLS)
{
//DataTable dtExcel=getExcelSheetTable();
列表表数据=新列表();
DataTable dtExcel=新的DataTable();
DataTable SocialMediaExcel=新DataTable();
string connStr=“Provider=Microsoft.ACE.OLEDB.12.0;数据源=“+strXLS+”;扩展属性=excel12.0;”;
尝试
{
OleDbDataAdapter adpt=新的OleDbDataAdapter(“从[Sheet1$]中选择*”,connStr);
自动填充(dtExcel);
SheetsData.Add(dtExcel);
}
捕获(例外情况除外)
{
掷骰子;
}
返回数据;
}
以下代码返回所选filelocation源的数据表。请记住将sheetname重命名为“Sheet1”
使用名称空间:使用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;
}
以下代码返回选定filelocation源的datatable。请记住将sheetname重命名为“Sheet1” 使用名称空间:使用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;
}