hastiam
یک شنبه 20 بهمن 1392, 11:40 صبح
سلام دوستان
من در یکی از فرمهام لیستی از اطلاعات دارم برنامه ای نوشتم که کاربر بتونه اطلاعات رو تو یک فایل اکسلی Export کنه.
به صورت زیر :
try
{
OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
HttpPostedFileBase hpf = Request.Files[0] as HttpPostedFileBase;
string[] ValidExt = { ".xlsx", ".xls" };
string curExt = System.IO.Path.GetExtension(hpf.FileName).ToLower( );
string curNameWithoutExt3 = System.IO.Path.GetFileName(hpf.FileName);
FileInfo f = new FileInfo(curNameWithoutExt3);
string a = Path.Combine(Directory.GetCurrentDirectory(), curNameWithoutExt3);
string sConnection = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source= '" + a + "';Extended Properties='Excel 12.0;HDR=YES;'";
OleDbConnection MyConnection = new OleDbConnection(sConnection);
MyConnection.Open();
myCommand.Connection = MyConnection;
myCommand.CommandText = "Insert into [Sheet1$] (GoodsCode,GoodsName,ConsumptionIndex,WarehouseNam e) values(@p1,@p2,@p3,@p4)";
var getList = repository.ProductionFormulas.Where(i => i.CreditFormula.GoodsId == goodsId).ToList().Select(i => new { GoodsCode = i.BOMGoods.Code, GoodsName = i.BOMGoods.Name, ConsumptionIndex = i.ConsumptionIndex, WarehouseName = i.Warehouse.Name }).ToList();
foreach (var m in getList)
{
myCommand.Parameters.Add("@p1", OleDbType.VarChar).Value = m.GoodsCode;
myCommand.Parameters.Add("@p2", OleDbType.VarChar).Value = m.GoodsName;
myCommand.Parameters.Add("@p3", OleDbType.Decimal).Value = m.ConsumptionIndex;
myCommand.Parameters.Add("@p4", OleDbType.VarChar).Value = m.WarehouseName;
myCommand.ExecuteNonQuery();
myCommand.Parameters.Clear();
}
}
catch (Exception ex)
{
result.Successfull = false;
result.Message = "NOK";
}
وقتی به myCommand.ExecuteNonQuery() میرسه خطای زیر رو نشون میده :
The Microsoft Access database engine could not find the object 'Sheet1$'. Make sure the object exists and that you spell its name and the path name correctly. If 'Sheet1$' is not a local object, check your network connection or contact the server administrator
من فکر میکنم به خاطر اینکه همه اطلاعات رو داره از سرور میخونه و فایل اکسلی رو به صورت Local میخونه این خطا رو می گیره، چطوری میشه کاربر یک فایل اکسلی رو از رو کامپیوتر خودش انتخاب کنه و اطلاعات رو اکسپورت کنه.
ممنون از توجهتون.
من در یکی از فرمهام لیستی از اطلاعات دارم برنامه ای نوشتم که کاربر بتونه اطلاعات رو تو یک فایل اکسلی Export کنه.
به صورت زیر :
try
{
OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
HttpPostedFileBase hpf = Request.Files[0] as HttpPostedFileBase;
string[] ValidExt = { ".xlsx", ".xls" };
string curExt = System.IO.Path.GetExtension(hpf.FileName).ToLower( );
string curNameWithoutExt3 = System.IO.Path.GetFileName(hpf.FileName);
FileInfo f = new FileInfo(curNameWithoutExt3);
string a = Path.Combine(Directory.GetCurrentDirectory(), curNameWithoutExt3);
string sConnection = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source= '" + a + "';Extended Properties='Excel 12.0;HDR=YES;'";
OleDbConnection MyConnection = new OleDbConnection(sConnection);
MyConnection.Open();
myCommand.Connection = MyConnection;
myCommand.CommandText = "Insert into [Sheet1$] (GoodsCode,GoodsName,ConsumptionIndex,WarehouseNam e) values(@p1,@p2,@p3,@p4)";
var getList = repository.ProductionFormulas.Where(i => i.CreditFormula.GoodsId == goodsId).ToList().Select(i => new { GoodsCode = i.BOMGoods.Code, GoodsName = i.BOMGoods.Name, ConsumptionIndex = i.ConsumptionIndex, WarehouseName = i.Warehouse.Name }).ToList();
foreach (var m in getList)
{
myCommand.Parameters.Add("@p1", OleDbType.VarChar).Value = m.GoodsCode;
myCommand.Parameters.Add("@p2", OleDbType.VarChar).Value = m.GoodsName;
myCommand.Parameters.Add("@p3", OleDbType.Decimal).Value = m.ConsumptionIndex;
myCommand.Parameters.Add("@p4", OleDbType.VarChar).Value = m.WarehouseName;
myCommand.ExecuteNonQuery();
myCommand.Parameters.Clear();
}
}
catch (Exception ex)
{
result.Successfull = false;
result.Message = "NOK";
}
وقتی به myCommand.ExecuteNonQuery() میرسه خطای زیر رو نشون میده :
The Microsoft Access database engine could not find the object 'Sheet1$'. Make sure the object exists and that you spell its name and the path name correctly. If 'Sheet1$' is not a local object, check your network connection or contact the server administrator
من فکر میکنم به خاطر اینکه همه اطلاعات رو داره از سرور میخونه و فایل اکسلی رو به صورت Local میخونه این خطا رو می گیره، چطوری میشه کاربر یک فایل اکسلی رو از رو کامپیوتر خودش انتخاب کنه و اطلاعات رو اکسپورت کنه.
ممنون از توجهتون.