PDA

View Full Version : خواندن از فایل Excel در C#‎



vida2012
دوشنبه 30 بهمن 1391, 08:19 صبح
دوستان چطور میتونم اطلاعات رو از EXCEL بخونم و درون یک datagridview نمایش بدم

danialafshari
دوشنبه 30 بهمن 1391, 08:38 صبح
سلام
لطفا از قالب بندی C# استفاده کنید
لینک های زیر رو نگاه کنید ببینید بدردتون می خوره ؟

لینک1 (http://stackoverflow.com/questions/15828/reading-excel-files-from-c-sharp)
لینک2 (http://social.msdn.microsoft.com/Forums/eu/csharpgeneral/thread/6264b659-f366-4c29-817b-d51b738212f5)

مهرداد صفا
دوشنبه 30 بهمن 1391, 12:53 عصر
با سلام
ابتدا نسخه مناسب Microsoft.Office.Interop.excel را به reference اضافه کنید و همین فضای نام را با استفاده از using در ابتدای فایل تعریف کنید.
یک Application بسازید:

Microsoft.Office.Interop.Excel.Application XL = new Microsoft.Office.Interop.Excel.Application();

سپس یک شی Workbook تعریف کنید تا به Workbook ای که باز میکنید اشاره کند:

Workbook book1 = XL.Workbooks.Open(@"e:\temp\gas.xls");

حالا میتوانید با استفاده از خصوصیت Sheets از Workbook باز شده به شیتهای آن دسترسی داشته باشید و در هر شیت خصوصیتی به نام Cells وجود دارد که از نوع Range است و از طریق آن میتوانید به سلولها دسترسی داشته باشید:

Worksheet sheet1 = book1.Sheets[1];
MessageBox.Show(sheet1.Cells[1,1].Value2);

vida2012
سه شنبه 01 اسفند 1391, 07:56 صبح
string connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\Book2.xlsx;Extended Properties='Excel 8.0;HDR=NO'";

OleDbConnection conn = new OleDbConnection(connstr);

string strSQL = "SELECT * FROM [Sheet1$]";



OleDbCommand cmd = new OleDbCommand(strSQL, conn);

DataSet ds = new DataSet();

OleDbDataAdapter da = new OleDbDataAdapter(cmd);

da.Fill(ds);

GridView1.DataSource = ds;

GridView1.DataBind();

چرا از databind ارور میگیره کسی هست راهنمایی کنه

mmd2009
سه شنبه 01 اسفند 1391, 10:56 صبح
با سلام

لطفا متن خظا رو بذارید که حداقل کسی خواست کمک بکنه بدونه بابت چی باید کمک بکنه..

لطفا اینقدر spam هم ندید.

موفق باشید

mohammad_2039
سه شنبه 01 اسفند 1391, 11:21 صبح
string connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\Book2.xlsx;Extended Properties='Excel 8.0;HDR=NO'";

OleDbConnection conn = new OleDbConnection(connstr);

string strSQL = "SELECT * FROM [Sheet1$]";



OleDbCommand cmd = new OleDbCommand(strSQL, conn);

DataSet ds = new DataSet();

OleDbDataAdapter da = new OleDbDataAdapter(cmd);

da.Fill(ds);

GridView1.DataSource = ds;

GridView1.DataBind();

چرا از databind ارور میگیره کسی هست راهنمایی کنه

با سلام
دوست عزیز باید به da بگید که ds رو با کدوم تیبل یا شیت(که من کار نکردم)، پر کنه. در حال حاضر با این کد دیتا ست شما خالیه. در ضمن اصلا به خط آخر نیاز نیست
فرض کنید دستور select روی بانک زدید. اون وقت میشد


da.fill(ds,"tbl_test");
GridView1.DataSource=ds;

masoudhaghshenas
چهارشنبه 25 اردیبهشت 1392, 18:56 عصر
با سلام و تشکر از پیامتان
پس از انجام کدهای کاربر M.safa، خطای زیر ظاهر می شود
Error 1 'DataTable' is an ambiguous reference between 'System.Data.DataTable' and 'Microsoft.Office.Interop.Excel.DataTable'
آیا راه حلی داره؟

tooraj_azizi_1035
چهارشنبه 25 اردیبهشت 1392, 21:19 عصر
DataTable رو تبدیل به System.Data.DataTable کن.

mehrshadms
یک شنبه 11 خرداد 1393, 18:15 عصر
private void button1_Click(object sender, EventArgs e) {
openFileDialog1.ShowDialog();


var fileName = openFileDialog1.FileName ;
var connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 12.0;IMEX=1;HDR=NO;TypeGuessRows=0;ImportMixedType s=Text\"";
var conn = new OleDbConnection(connectionString);
conn.Open();

var cmd = conn.CreateCommand();

cmd.CommandText = "SELECT * FROM [Sheet1$]";
var adapter = new OleDbDataAdapter(cmd);
var ds = new DataSet();
DataTable dt = new DataTable();
adapter.Fill(ds);
adapter.Fill(dt);
dataGridView1.DataSource = dt;
}

ashkan1234
چهارشنبه 14 آبان 1393, 19:34 عصر
کسی میدونه چجوری با این روش میشه کل مقادیر رو داخل یک List ریخت؟(یا گرید!)
مثلا با روش کانکشن کل مقادیر رو میشه ریخت!
با این روش چجوری مشه اینکار رو کرد و بعد با Linq توی دیتابیس ذخیره اش کنم؟؟؟
البته بریزم توی لیست حلش میکنم خودم!
باتشکر