PDA

View Full Version : سوال: خواندن اکسل با فایل آپلود در گرید



mashhadpix
شنبه 13 مهر 1392, 21:03 عصر
سلام به همگی
من می خواهم وقتی یک فایل اکسل با فایل آپلود، آپلود کردم مستقیم در گرید ویو به من نمایش بدهد.
در ضمن میدونم که باید از Microsoft.Jet.OLEDB استفاده شود که استفاده کردم ولی همچنان مشکل دارم.
کدهای زیر را استفاده کردم ولی جواب نگرفتم:

protected void Page_Load(object sender, EventArgs e)
{
GetExcelSheetNames("Path");

}

private void GetExcelSheetNames(string ExcelFile)
{
OleDbConnection objConn = null;
System.Data.DataTable dt = null;
if (FileUpload1.HasFile)
{
string ExceFile1 = Guid.NewGuid().ToString() + ".xls";
FileUpload1.SaveAs(Server.MapPath("/ExcelFile/" + ExceFile1));

}
try
{
DataSet ds = new DataSet();
// Connection String.
String connString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + ExcelFile +
";Extended Properties=Excel 8.0;";
// Create connection.
objConn = new OleDbConnection(connString);
// Opens connection with the database.
objConn.Open();
// Get the data table containing the schema guid, and also sheet names.
dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables , null);
if (dt == null)
{
return;
}
String[] excelSheets = new String[dt.Rows.Count];
int i = 0;
// Add the sheet name to the string array.
// And respective data will be put into dataset table
foreach (DataRow row in dt.Rows)
{
excelSheets[i] = row["TABLE_NAME"].ToString();
OleDbCommand cmd = new OleDbCommand("SELECT * FROM [" + excelSheets[i] + "]", objConn);
OleDbDataAdapter oleda = new OleDbDataAdapter();
oleda.SelectCommand = cmd;
oleda.Fill(ds, "TABLE");
i++;
}
// Bind the data to the GridView
GridView1.DataSource = ds.Tables[0].DefaultView;
GridView1.DataBind();
Session["Table"] = ds.Tables[0];
}
catch (Exception ex)
{
Response.Write(ex.Message);

}
finally
{
// Clean up.
if (objConn != null)
{
objConn.Close();
objConn.Dispose();
}
if (dt != null)
{
dt.Dispose();
}
}
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataSource = ((DataTable)Session["Table"]).DefaultView;
GridView1.DataBind();
}


جالب اینجاست که فایلی که در فایل آپلود قرار می دهم هم آپلود می کند و هم به پوشه آپلود منتقل می کند.
فقط مشکل اینجاست که فایل آپلود شده را تو گرید ویو به من نشان نمی دهد.
ممنون میشم یکی باشه بهم کمک کنه خیلی زود میخام.

bayatvahid
یک شنبه 14 مهر 1392, 11:49 صبح
سلام

شما میتونی از LinqToExcel استفاده کنی(دانلود آخرین ورژن از NuGet)
البته اول باید فایلی رو که از آپلود فایل گرفتی رو داخل یه پوشه موقت روی سرور ذخیره و بعد از اینکه داده ها رو گرفتی پاکش کنی.


string filename="آدرس فایل روی سرور";
var excel=new ExcelQueryFactory(@filename);
var inputData = (from x in excel.WorksheetNoHeader() select x).ToList();

mashhadpix
یک شنبه 14 مهر 1392, 19:09 عصر
سلام

شما میتونی از LinqToExcel استفاده کنی(دانلود آخرین ورژن از NuGet)
البته اول باید فایلی رو که از آپلود فایل گرفتی رو داخل یه پوشه موقت روی سرور ذخیره و بعد از اینکه داده ها رو گرفتی پاکش کنی.


string filename="آدرس فایل روی سرور";
var excel=new ExcelQueryFactory(@filename);
var inputData = (from x in excel.WorksheetNoHeader() select x).ToList();


الان مشکل من اینه که وقتی فایل اکسلی آپلود می کنم و در پوشه ای ذخیره می کنم چطوری باید اون فایل ذخیره شده در پوشه را بخونم و تو اس کیو ال بزارم و بعدش بتونم محاسبات انجام بدم و در آخر در گرید بهم نشون بده
ممنون میشم راهنمایی کنید؟