PDA

View Full Version : وارد کردن اطلاعات از اکسل به dataGrid



nasimnastaran
پنج شنبه 23 مهر 1388, 09:07 صبح
دوستان سلام
می خواستم اطلاعات اطلاعات excel رو در یک دیتا گرید ( از هارد یا cd یا هر removable disk ) نمایش بدم و بر روی آن تجزیه و تحلیل های مختلفی انجام بدم ( ضمنا اطلاعات رو نمی خوام در هییچ دیتا بیسی ذخیره نمایم . فعلا تا اینجا ...
با سپاس از همه

daniel_0247
پنج شنبه 23 مهر 1388, 13:14 عصر
سلام
شما باید فایل اکسل رو با ستون های همسان با بانک اطلاعاتی پر کنی و اون رو برای مثال در پوشه debug قرار بدی وحالا از کد استفاده کن .


using System;
using System.Collections.Generic;
using System.Text;
using System.Data.Common;
using System.Data;

namespace ExcelAutomation
{
class ExcelDB
{
string connectionString = string.Empty;
DbProviderFactory dbFactories = DbProviderFactories.GetFactory("System.Data.OleDb");
DbConnection con;

public ExcelDB()
{
con = dbFactories.CreateConnection();
string dbPath = AppDomain.CurrentDomain.BaseDirectory + "Demo.xls";
connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbPath + ";Extended Properties='Excel 8.0;HDR=YES'";
con.ConnectionString = connectionString;
}
public int SaveCity(string NewName, string OldName)
{
try
{
using (DbCommand cmdInsert = con.CreateCommand())
{
string commandText= "INSERT INTO [Cities$]([Newname],[Oldname]) VALUES(@newname,@oldname)";
DbParameter param = cmdInsert.CreateParameter();
param.ParameterName = "@newname";
param.DbType = System.Data.DbType.String;
DbParameter param1 = cmdInsert.CreateParameter();
param1.ParameterName = "@odlname";
param1.DbType = System.Data.DbType.String;
cmdInsert.CommandText = commandText;
cmdInsert.Parameters.Add(param);
cmdInsert.Parameters.Add(param1);
cmdInsert.Parameters["@newname"].Value = NewName;
cmdInsert.Parameters["@odlname"].Value = OldName;
con.Open();
cmdInsert.ExecuteNonQuery();
return 0;
}
}
catch(Exception ex)
{
throw ex;
}
finally
{
con.Close();
}

}

public DataTable LoadCity()
{
DbDataAdapter adapter = dbFactories.CreateDataAdapter();
DbCommand selectCommand = con.CreateCommand();
selectCommand.CommandText = "SELECT Newname,Oldname FROM [Cities$]";
selectCommand.Connection = con;
DataSet cities = new DataSet();
try
{
con.Open();
adapter.SelectCommand = selectCommand;
adapter.Fill(cities);
}
catch
{

}
finally
{
con.Close();
}
return cities.Tables[0];

}
}
}


حالا در یک رویداد click :


private void ExcelDataBind_Load(object sender, EventArgs e)
{
ExcelDB db = new ExcelDB();
DataTable dsCity =db.LoadCity();
dgexcel.DataSource = dsCity;
//dgexcel name of the datagridview.
}

______________________
My Blog (http://prohardcoding.blogfa.com/)

ebrahim1988
پنج شنبه 23 مهر 1388, 13:26 عصر
قربون چشات برم،نوشته نميخام جايي ذخيره كنم
من اين مشكلو حل كردم(قبلا) ولي كدشو فراموش كردم
الان هم ‍‍C# ندارم
اگه پيداش كردم برات ميفرستم

nasimnastaran
شنبه 25 مهر 1388, 12:20 عصر
من اين مشكلو حل كردم(قبلا) ولي كدشو فراموش كردم
الان هم ‍‍C#‎ ندارم
اگه پيداش كردم برات ميفرستم
از دانيال هم كه زحمت كشيدند ،پاسخ گذاشتند ،‌ممنون ،‌ولي همانطور كه ebrahim1988 محترم فرمودند ،‌نمي خوام اطلاعات در جايي ذخيره بشه .

beh_demehri
یک شنبه 27 دی 1388, 16:08 عصر
private void button1_Click(object sender, EventArgs e)
{

DataTable test = getDataFromXLS("c:\\book1.xls");
if (test != null)
dataGridView1.DataSource = test;

}

private DataTable getDataFromXLS (string strFilePath)
{

string strConnectionString = "";
strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strFilePath + "; Jet OLEDB:Engine Type=5;Extended Properties=Excel 8.0;";
OleDbConnection cnCSV = new OleDbConnection(strConnectionString);
cnCSV.Open();
OleDbCommand cmdSelect = new OleDbCommand(@"SELECT * FROM [Sheet" + textBox1.Text + "$]", cnCSV);
OleDbDataAdapter daCSV = new OleDbDataAdapter();
daCSV.SelectCommand = cmdSelect;
DataTable dtCSV = new DataTable();
daCSV.Fill(dtCSV);
cnCSV.Close();
}

ahrimaneahurai
یک شنبه 27 دی 1388, 17:33 عصر
سُلام اینو امتحان کن ببین به دردت می خوره