PDA

View Full Version : سوال: بارگذاری اکسل از طریق کد



asma65
سه شنبه 19 شهریور 1392, 07:34 صبح
سلام به همگی
من توی فرمم از طریق یه upload file یه فایل اکسل رو با فرمت خاصی بارگذاری می کنم و تو یه گرید تو صفحه نمایشش میدم وقتی این کار رو local انجام میدم کار میکنه چه رو سرور چه روی سیستم خودم اما همین که کاربر می خواد از طریق اینترنت این کار رو انجام بده خطا می ده و نمی تونه ! کدم هم اینه :

protected OleDbCommand ExcelConnection()
{
string path = "~/UploadExcell/" + Session["FileName"].ToString() + Session["extension"].ToString();
string xConnStr = "";
try
{
xConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + Server.MapPath(path) + ";Extended Properties=Excel 12.0;";
}
catch
{
try
{
xConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Server.MapPath(path) + ";Extended Properties=Excel 8.0;";
}
catch
{
}
}
if (xConnStr == "")
{

return null;
}
OleDbConnection objXConn = new OleDbConnection(xConnStr);
objXConn.Open();
OleDbCommand objCommand = new OleDbCommand("SELECT * FROM [Sheet1$]", objXConn);
return objCommand;
}

protected void btnUpload_Click(object sender, EventArgs e)
{
ErrorDiv.Visible = false;
errorIrcLabel.Visible = false;
divSuccessBox.Visible = false;

var logic = new GeneralLogic();
var order = logic.GetOrderByID(Guid.Parse(Session["ID"].ToString()));
Session["Number"] = order.Number;
if (ExcelUpload.HasFile)
{
try
{
string filename = Session["Number"].ToString() + DateTime.Now.Ticks.ToString().Substring(0, 4);
Session["FileName"] = filename;
string extension = Path.GetExtension(ExcelUpload.PostedFile.FileName) ;
Session["extension"] = extension;
if (extension.ToLower() == ".xls")
{
ExcelUpload.SaveAs(Server.MapPath("~/UploadExcell/" + filename + ".xls"));
}
else
{
ExcelUpload.SaveAs(Server.MapPath("~/UploadExcell/" + filename + ".xlsx"));
}

OleDbDataAdapter objDataAdapter = new OleDbDataAdapter();
objDataAdapter.SelectCommand = ExcelConnection();
DataTable Excelltable = new DataTable();
objDataAdapter.Fill(Excelltable);
GridItems.DataSource = Excelltable;
GridItems.DataBind();
DivButtons.Visible = true;
itemLIst.Visible = true;

}
catch
{
ErrorDiv.Visible = true;
ErrorLabel.Text = "خطا";
}
}
}


مشکل از چیه ؟
ممنون

asma65
سه شنبه 19 شهریور 1392, 08:38 صبح
خطایی هم که میده این هست
The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.

وقتی روی سرور برنامه رو اجرا میکنم خطا نمیده !