PDA

View Full Version : نمایش محتویات excel در datagridview



btbmrad
پنج شنبه 04 شهریور 1395, 11:13 صبح
سلام
وقت دوستان بخیر
میخوام محتویات داخل یک فایل اکسل در دیتاگریدویو نمایش داده بشه. کدهای زیررا نوشتم برنامه درست اجرامیشه اما مشکلی که وجودداره اینه که فایل اکسل حتما باید بازباشه واگه درحالت open نباشه
در خط
adap.Fill(ds);

برنامه باخطا مواجه میشم.لطفا راهنمایی کنید.



DataSet DtSet=new DataSet();




OleDbConnection con = new OleDbConnection(@"provider=Microsoft.Jet.OLEDB.4.0;Data Source='E:\My-program\biber_customer.xlsx';Extended Properties=Excel 8.0;");

// OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;
//Extended Properties="Excel 12.0 Xml;HDR=YES";
OleDbCommand mycommand = new OleDbCommand("select * from [Sheet1$]", con);

DataSet ds = new DataSet();
OleDbDataAdapter adap = new OleDbDataAdapter(mycommand);
con.Open();
adap.Fill(ds);
con.Close();
dataGridView1.DataSource = ds.Tables[0];

Mostafa.sodani
پنج شنبه 04 شهریور 1395, 11:54 صبح
دوست عزیز سلام
اول باید رفرنس Microsoft.Office.Interop.Excel رو به پروژه اضافه کن بعد فایل اکسل خودت رو در پوشه Bin پروژه ذخیره کن و سپس کد های زیر :

Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
Excel.Range range;



xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Open(Application.StartupPath + "\\PhonNoList.xlsx", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindow s, "\t", false, false, 0, true, 1, 0);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1) ;

range = xlWorkSheet.UsedRange;

for (int columnCounter = 1; columnCounter <= range.Columns.Count; columnCounter++)
{
this.dgvNumber.Columns.Add(xlWorkSheet.Cells[1, columnCounter].Value2, xlWorkSheet.Cells[1, columnCounter].Value2);
}
//get the value of each excel cell and put into this variable
string str;
//Loop counters
int rowCounter = 0;
int columnCounter2 = 0;

for (rowCounter = 2; rowCounter <= range.Rows.Count; rowCounter++)
{
//Create a new row into the datagridview
this.dgvNumber.Rows.Add();
for (columnCounter2 = 1; columnCounter2 <= range.Columns.Count; columnCounter2++)
{
str = Convert.ToString((range.Cells[rowCounter, columnCounter2] as Excel.Range).Value2);
//add the value of excel file into the new row
this.dgvNumber.Rows[rowCounter - 2].Cells[columnCounter2 - 1].Value = str;
}
}
xlWorkBook.Close(true, null, null);
xlApp.Quit();

releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);

البته باید تغییراتی رو خودت متناسب با پروژه ات انجام بدی مثلا PhonNoList.xlsx که اسم فایل اکسل من برات که با فونت قرمز مشخصش کردم و دیتا گریدویو ی خودت رو هم باید در جاهایی که با رنگ سبز نشون دادم عوض کنی

btbmrad
جمعه 05 شهریور 1395, 14:40 عصر
سلام
ممنون برای کدهاکه به نظرمیرسه کامل باشه اما من این کدها رااستفاده کردم در خطوط 8و9و10باخطای

Error 3 Cannot create an instance of the abstract class or interface 'Microsoft.Office.Interop.Excel._Application' D:\biber\biber\biber\Customer-Count.cs 95 57




مواجه میشوم. از vs2012استفاده می کنم وفایل dllموردتوضیح داده شده در بالا را ازاینترنت دانلودکردم.
لطفا راهنمایی کنید.

Mostafa.sodani
پنج شنبه 11 شهریور 1395, 11:45 صبح
سلام
ممنون برای کدهاکه به نظرمیرسه کامل باشه اما من این کدها رااستفاده کردم در خطوط 8و9و10باخطای

Error 3 Cannot create an instance of the abstract class or interface 'Microsoft.Office.Interop.Excel._Application' D:\biber\biber\biber\Customer-Count.cs 95 57




مواجه میشوم. از vs2012استفاده می کنم وفایل dllموردتوضیح داده شده در بالا را ازاینترنت دانلودکردم.
لطفا راهنمایی کنید.
using Excel = Microsoft.Office.Interop.Excel; این یوزین رو اضافه کردی؟

btbmrad
سه شنبه 30 شهریور 1395, 12:17 عصر
سلام.مرسی برای راهنمایی
مشکلم حل شدکدهای نوشته شده کامل نبود چنددستوراضافه کردم حل شد