PDA

View Full Version : انتقال اطلاعات از فایل excel به بانک اطلاعاتی Sql



bee_sanandaj
دوشنبه 01 شهریور 1389, 17:03 عصر
سلام خسته نباشید
می خواستم ببینم چطوری میشه اطلاعات رو از فایل اکسل سطر به سطر بخونی و در بانک اطلاعاتی SQL ذخیره کنیم.
میگن خودش کامپوننت داره
هم برای ارسال به دیتابیس و هم برای رسم نمودار
اما من هر چی گشتم چنین کامپوننتی رو پیدا نکردم.:متعجب:

bee_sanandaj
دوشنبه 01 شهریور 1389, 17:23 عصر
اگه چنین کامپوننتی داشتید ممنون میشم بزارید

md_bluelily
دوشنبه 01 شهریور 1389, 17:57 عصر
اگر از نسخه های بعد از SQL Server 2000 استفاده می کنید دنبال SSIS بگردید.

mahziar
دوشنبه 01 شهریور 1389, 18:11 عصر
سلام خسته نباشید
می خواستم ببینم چطوری میشه اطلاعات رو از فایل اکسل سطر به سطر بخونی و در بانک اطلاعاتی SQL ذخیره کنیم.
میگن خودش کامپوننت داره
هم برای ارسال به دیتابیس و هم برای رسم نمودار
اما من هر چی گشتم چنین کامپوننتی رو پیدا نکردم.:متعجب:



سلام

این برای خوندن از فایل اکسل :

اول باید


using System.Data.OleDb;

و بعد :


string strFileName;
OpenFileDialog b = new OpenFileDialog();
b.Filter = "Exel files (*.xls) |*.xls| All files (*.*) |*.*";
b.Title = "éلهں هںیé ںک«éی ©ں ¤ى¢ ںë¢çںé ى ©ëںêى ں뢦ں کëی§";
try
{
if (b.ShowDialog() == DialogResult.OK)
{
// Save the file name
strFileName = b.FileName;
////////////////////////Move Exel File To Program//////////////////
Cursor.Current = Cursors.WaitCursor;
String strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + strFileName +
"; Extended Properties=Excel 8.0;";
ds = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter
("SELECT * FROM [Sheet1$]", strConn);
da.Fill(ds);
}
}
catch (Exception e1)
{
MessageBox.Show("ëيم هںیé ں뢦ں ¬§ى ­¥ی¥ ëی«¢ . éلهں یک هںیé ںک«é ¨¦ی©ى ¬§ى ں ™هی« 2003 ©ں ں뢦ں ëêںیی§", " ©يھ ¦لں §© ©ëںêى", MessageBoxButtons.OK, MessageBoxIcon.Error);
MessageBox.Show(e1.Message, " ©يھ ¦لں §© ©ëںêى", MessageBoxButtons.OK, MessageBoxIcon.Error);

}


برای رسم نمودار هم میتونی از نمونه زیر استفاده کنی ، البته ارتباط با دیتابیسش رو دیگه خودت باید انجام بدی :

bee_sanandaj
دوشنبه 01 شهریور 1389, 19:22 عصر
سلام ممنون میرم امتحان کنم
--------------------

اگر از نسخه های بعد از SQL Server 2000 استفاده می کنید دنبال SSIS بگردید.
SISS چیه؟
میشه بگی در کجا به درد من میخوره

md_bluelily
پنج شنبه 04 شهریور 1389, 14:34 عصر
SSIS مخفف SQL Server Integration Services هست و کلا زمانی که شما می خواهید انتقال اطلاعات و یا تبدیل اطلاعات از یک منبع داده به منبع داده دیگه ای داشته باشید میتونید ازش استفاده کنید.
میتونید با ساختن Package های مرتبط این کار رو انجام بدید و با ذخیره کردن اون Package میتونید این انتقال رو تکرار کنید.

FVVSBN
یک شنبه 25 مهر 1389, 00:15 صبح
سلام

این برای خوندن از فایل اکسل :

اول باید


using System.Data.OleDb;

و بعد :


string strFileName;
OpenFileDialog b = new OpenFileDialog();
b.Filter = "Exel files (*.xls) |*.xls| All files (*.*) |*.*";
b.Title = "éلهں هںیé ںک«éی ©ں ¤ى¢ ںë¢çںé ى ©ëںêى ں뢦ں کëی§";
try
{
if (b.ShowDialog() == DialogResult.OK)
{
// Save the file name
strFileName = b.FileName;
////////////////////////Move Exel File To Program//////////////////
Cursor.Current = Cursors.WaitCursor;
String strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + strFileName +
"; Extended Properties=Excel 8.0;";
ds = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter
("SELECT * FROM [Sheet1$]", strConn);
da.Fill(ds);
}
}
catch (Exception e1)
{
MessageBox.Show("ëيم هںیé ں뢦ں ¬§ى ­¥ی¥ ëی«¢ . éلهں یک هںیé ںک«é ¨¦ی©ى ¬§ى ں ™هی« 2003 ©ں ں뢦ں ëêںیی§", " ©يھ ¦لں §© ©ëںêى", MessageBoxButtons.OK, MessageBoxIcon.Error);
MessageBox.Show(e1.Message, " ©يھ ¦لں §© ©ëںêى", MessageBoxButtons.OK, MessageBoxIcon.Error);

}


برای رسم نمودار هم میتونی از نمونه زیر استفاده کنی ، البته ارتباط با دیتابیسش رو دیگه خودت باید انجام بدی :


با سلام.

این ارور رو میده:



the 'Provider=Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.


میشه راهنمایی کنید.

من از آفیس 2010 استفاده میکنم ویندوز و آفیسم هم 64 بیتی هستن

FVVSBN
دوشنبه 26 مهر 1389, 21:17 عصر
اگه دوستی کار کرده لطفا منو راهنمایی کنه

md_bluelily
جمعه 07 آبان 1389, 23:50 عصر
با سلام.

این ارور رو میده:



the 'Provider=Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.


میشه راهنمایی کنید.

من از آفیس 2010 استفاده میکنم ویندوز و آفیسم هم 64 بیتی هستن

توصیه من همچنان SSIS هست.
در مورد این کد که گفتید ایراد داره باید برای رفع ایرادش طریقه ی کامپایل برنامه رو از Any CPU و یا 64bit به x86 تغییر بدید تا کار بکنه. این به این خاطر هست که OLEDB نسخه ی 64bit نداره.

موفق باشید.

golhay2
شنبه 08 آبان 1389, 15:01 عصر
با سلام
من خودم برای یک اداره برنامه نوشتم که بانکش foxpro بود اونا به اکسل تبدیل کردم و سپس با دستور SqlBulkcopy
اسم sheet اکسل ما Data است(اسم دلخواه) که 1000سطر دارد و شامل دو ستون ID و Data است





http://www.davidhayden.com/photos/bulkcopyexcelspreadsheet.jpg

حال ما می خواهیم داده ها را به بانک اس کیو ال با نام دلخواهExcelData منتقل کنیم


http://www.davidhayden.com/photos/exceldatasqlservertable.jpg

کد زیر را به این منظور می نویسیم


// Connection String to Excel Workbook
string excelConnectionString =@"Provider=Microsoft
.Jet.OLEDB.4.0;Data Source=Book1.xls;Extended
Properties=""Excel 8.0;HDR=YES;""";

// Create Connection to Excel Workbook
using (OleDbConnection connection =
new OleDbConnection(excelConnectionString))
{
OleDbCommand command =new OleDbCommand
("Select ID,Data FROM [Data$]", connection);

connection.Open();

// Create DbDataReader to Data Worksheet
using (DbDataReader dr = command.ExecuteReader())
{
// SQL Server Connection String
string sqlConnectionString ="Data Source=.;
Initial Catalog=Test;Integrated Security=True";

// Bulk Copy to SQL Server
using (SqlBulkCopy bulkCopy =
new SqlBulkCopy(sqlConnectionString))
{
bulkCopy.DestinationTableName ="ExcelData";
bulkCopy.WriteToServer(dr);
}
}
}

golhay2
شنبه 08 آبان 1389, 15:05 عصر
برای کانکشن هم به آدرس زیر بروید:
http://www.connectionstrings.com/access-2007