PDA

View Full Version : سوال: مشکل در خواندن فایل excel



zahra111
یک شنبه 22 آذر 1388, 20:40 عصر
سلام.
با (OLEDB) به راحتی می تونم یه فایل Excel رو تو DataGridView نشون بدم . اما اگربخوام فایل Excel با فرمت خاصی رو که در اختیار دارم(لیست تراکنش های بانک ملی در یک روز ) بخونم Error میده و اگر اون فایل رو با نرم افزار Excel باز کنم و بعد با کدهای C# بخونم Error نمیده . کسی میدونه چرا؟

saber4166
یک شنبه 22 آذر 1388, 20:48 عصر
دوست عزيز مي تونيد كدتونو قرار بدين يا راهنمايي كنيد
اخه بنده به اين كد احتياج دارم بسيار ممنون =>لطفا مورد زير رو كمكم كنيد
((OLEDB) یه فایل Excel رو تو DataGridView نشون بدم )

saber4166
دوشنبه 23 آذر 1388, 07:41 صبح
دوست عزيز كمكم كنيد؟؟؟

zahra111
دوشنبه 17 آبان 1389, 09:56 صبح
دوست عزيز مي تونيد كدتونو قرار بدين يا راهنمايي كنيد
اخه بنده به اين كد احتياج دارم بسيار ممنون =>لطفا مورد زير رو كمكم كنيد
((OLEDB) یه فایل Excel رو تو DataGridView نشون بدم )

1. System.Data.OleDb را using کنید .
2.


private void BtnRead_Click(object sender, EventArgs e)
{
string StrCon = "Provider=microsoft.jet.oledb.4.0;Data source=D:\\test.xls;Extended properties=Excel 8.0;";
OleDbConnection olCon = new OleDbConnection(StrCon);
olCon.Open();
OleDbDataAdapter da = new OleDbDataAdapter("select * from [sheet1$]", olCon);
DataSet ds = new DataSet();
da.Fill(ds, "sheet1");
dataGridView1.DataSource = ds.Tables[0];
olCon.Close();
}

dr_jacky_2005
دوشنبه 17 آبان 1389, 11:00 صبح
1. System.Data.OleDb را using کنید .
2.


private void BtnRead_Click(object sender, EventArgs e)
{
string StrCon = "Provider=microsoft.jet.oledb.4.0;Data source=D:\\test.xls;Extended properties=Excel 8.0;";
OleDbConnection olCon = new OleDbConnection(StrCon);
olCon.Open();
OleDbDataAdapter da = new OleDbDataAdapter("select * from [sheet1$]", olCon);
DataSet ds = new DataSet();
da.Fill(ds, "sheet1");
dataGridView1.DataSource = ds.Tables[0];
olCon.Close();
}



کانکشن استرینگ زیر رو اگه استفاده کنید،از اکسل سال 1997 تا اکسل 2010 رو ساپورت میکنه:


strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=" + strFilePath + "; Jet OLEDB:Engine Type=5;" +
"Extended Properties=\"Excel 12.0;ImportMixedTypes=Text;HDR=NO;IMEX=1;\"";


دکمۀ تشکر یادت نره:خجالت:

zahra111
پنج شنبه 20 آبان 1389, 17:41 عصر
کاربر dr_jacky_2005 ، چطور میشه ConnectionString رو تنظیم کرد که در فایل Excel ، چند خط اول رو به عنوان Data در نظر نگیره؟ در واقع از چند خط اول پرش کنه؟

dr_jacky_2005
یک شنبه 23 آبان 1389, 12:56 عصر
کاربر dr_jacky_2005 ، چطور میشه ConnectionString رو تنظیم کرد که در فایل Excel ، چند خط اول رو به عنوان Data در نظر نگیره؟ در واقع از چند خط اول پرش کنه؟

توو کانکشن استرینگ این قسمت:
HDR=NO
فقط میگه که سطر اول هدر بشه یا نه!

شما تیکه کدی که باهاش داری دیتاگریدت رو پز میکنی رو بدین اینجا
...تا بگم

اگه حس و حالش رو نداری...
این یک تیکه کد است...ببین،ایده بگیر



foreach (DataRow dgv in test.Rows)
{
dataGridView1.Rows.Add("");

for (int i = 0; i < test.Columns.Count; i++)
{
dataGridView1.Rows[count].Cells[i].Value = dgv[i].ToString();
}
count++;
}

اون تست دیتا تیبل ام است.
حالا فقط کافیه که مقدار i رو درست کنی

FVVSBN
یک شنبه 23 آبان 1389, 13:41 عصر
کاربر dr_jacky_2005 ، چطور میشه ConnectionString رو تنظیم کرد که در فایل Excel ، چند خط اول رو به عنوان Data در نظر نگیره؟ در واقع از چند خط اول پرش کنه؟
بنده هم همین سوال رو دارم.
آیا ConnectionString میتونه این امکان رو به ما بده؟

+
میشه ConnectionString رو توضیح بدید؟

zahra111
یک شنبه 23 آبان 1389, 17:11 عصر
1.از اونجایی که چند سطر اول فایل اکسل من فرمت یکسانی ندارند (هم در نوع سلولها و هم در تعداد سلول ها متفاوتند ) ، مجبورم 6 خط اول رو که برای من ارزش داده ایی ندارند ، حذف کنم که کدش رو پیدا کردم و برای بقیه دوستان هم قرار میدم .
اول به references پروژه ، Microsoft.Office.Interop.Excel رو add کنید .



publicvoid DeleteExcelRows(string filePath,int RowNumber)
{
System.Threading.Thread.CurrentThread.CurrentCultu re =
new System.Globalization.CultureInfo("en-US");
string xlsPath = filePath;
Microsoft.Office.Interop.Excel.Application excelApp =
new Microsoft.Office.Interop.Excel.ApplicationClass();
Microsoft.Office.Interop.Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(xlsPath, 0,
false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindow s, "",
true, false, 0, true, false, false);
Microsoft.Office.Interop.Excel.Worksheet sheet =
(Microsoft.Office.Interop.Excel.Worksheet)excelWor kbook.Worksheets.get_Item(Sheet1);//sheetName
Microsoft.Office.Interop.Excel.Range ran =
(Microsoft.Office.Interop.Excel.Range)sheet.Rows[RowNumber, Type.Missing];
ran.Select();
ran.Delete(Microsoft.Office.Interop.Excel.XlDirect ion.xlUp);
string tmpName = System.IO.Path.GetTempFileName();
System.IO.File.Delete(tmpName);
excelWorkbook.SaveAs(tmpName, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode. xlExclusive,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
excelWorkbook.Close(false, Type.Missing, Type.Missing);
excelApp.Quit();
System.IO.File.Delete(xlsPath);
System.IO.File.Move(tmpName, xlsPath);
}

robat7
دوشنبه 24 آبان 1389, 05:19 صبح
ببخشید ممکن است بفرمایید چرا از OLEDB برای خواند فایل استفاده می نمایید؟
و چرا مستقیما فایل را باز نمی کنید؟

dr_jacky_2005
دوشنبه 24 آبان 1389, 09:27 صبح
1.از اونجایی که چند سطر اول فایل اکسل من فرمت یکسانی ندارند (هم در نوع سلولها و هم در تعداد سلول ها متفاوتند ) ، مجبورم 6 خط اول رو که برای من ارزش داده ایی ندارند ، حذف کنم که کدش رو پیدا کردم و برای بقیه دوستان هم قرار میدم .
اول به references پروژه ، Microsoft.Office.Interop.Excel رو add کنید .



publicvoid DeleteExcelRows(string filePath,int RowNumber)
{
System.Threading.Thread.CurrentThread.CurrentCultu re =
new System.Globalization.CultureInfo("en-US");
string xlsPath = filePath;
Microsoft.Office.Interop.Excel.Application excelApp =
new Microsoft.Office.Interop.Excel.ApplicationClass();
Microsoft.Office.Interop.Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(xlsPath, 0,
false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindow s, "",
true, false, 0, true, false, false);
Microsoft.Office.Interop.Excel.Worksheet sheet =
(Microsoft.Office.Interop.Excel.Worksheet)excelWor kbook.Worksheets.get_Item(Sheet1);//sheetName
Microsoft.Office.Interop.Excel.Range ran =
(Microsoft.Office.Interop.Excel.Range)sheet.Rows[RowNumber, Type.Missing];
ran.Select();
ran.Delete(Microsoft.Office.Interop.Excel.XlDirect ion.xlUp);
string tmpName = System.IO.Path.GetTempFileName();
System.IO.File.Delete(tmpName);
excelWorkbook.SaveAs(tmpName, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode. xlExclusive,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
excelWorkbook.Close(false, Type.Missing, Type.Missing);
excelApp.Quit();
System.IO.File.Delete(xlsPath);
System.IO.File.Move(tmpName, xlsPath);
}

d
اگه فرمت یکسانی ندارد سلول هایتان،چون که به صورت پیش فرض دابل میگیره.
چطور درست کنیم مشکل رو؟
باید طرز پر کردن دیتاگرید رو عوض کنیم.
و همه رو string بدیم نوع هارو.