PDA

View Full Version : ايمپورت از اكسل به اسكيوال



nickandish
دوشنبه 21 شهریور 1390, 09:50 صبح
با سلام به دوستان
نمي دونم از اينكه سوالم رو اينجا مطرح مي كنم درست يا نه . به هر حال ببخشيد.
من مي خوام يك سري اطلاعات از فايل اكسل ايمپورت كنم تو جدول ديتابيسم. براي اين كار از دستور زير استفاده مي كنم
ADOTable1->FieldByName("column name")->AsString
سوال اينه كه به عنوان پارامتر بايد نام ستون رو وارد كنم كه به طور پيش فرض اكسل سطر اول رو نام ستون ها در نظر مي گيره. ولي من مي خوام حروف مربوط به هر سطر مثلا A , B , c , .... به عنوان نام ستون هام باشه. يعني كاربر در برنامه يكي از اين حروف رو وارد كنه و من بر اساس اون مقدار ستون مربوطه رو جايگزين كنم.مثلا كاربر
hello dear #A# .how are you
رو وارد كنه . و برنامه مقدار ستون A رو جايگزين كنه.
ممنون ميشم اگر من رو راهنمايي كنيد. بي صبرانه منتظر پاسخ شما عزيزان هستم.
جاودانه باشيد و تندرست

Galawij
دوشنبه 21 شهریور 1390, 23:01 عصر
سلام دوست عزیز،
شما اول یک جدول ایجاد کنید، و اسم سطرها را متناسب با حروف لاتین (A,B,C, ... , Z) قرار بدید.بعد محتویات فایل EXCEL را وارد این Table بکنید. دستورش به این صورت می شه (FOR Excel 2007-2010):

DECLARE @myfile varchar(800)
SET @myfile ='D:\Book1.xlsx'
EXEC('Insert INTO dbo.YourTable Select * FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'', ''Excel 12.0 Xml;HDR=YES;Database='+ @myfile +''', '' SELECT * FROM [Sheet1$]'')')

mrm0101
دوشنبه 24 بهمن 1390, 13:21 عصر
سام . این کد در اس کیو ال سرور 2008 کار نمی کند . کسی از دوستان در اس کیو ال سرور 2008 از اکسل به دیتا بیس اطلاعات وارد کرده است . با تشکر

Galawij
دوشنبه 24 بهمن 1390, 14:12 عصر
این کد در اس کیو ال سرور 2008 کار نمی کند . کسی از دوستان در اس کیو ال سرور 2008 از اکسل به دیتا بیس اطلاعات وارد کرده است .
سلام،
راه های زیادی برای این کار وجود دارد:

استفاده از Import\Export (http://dotnetslackers.com/articles/sql/Importing-MS-Excel-data-to-SQL-Server-2008.aspx)
از طریق Integration Services (http://www.techrepublic.com/blog/datacenter/how-to-import-an-excel-file-into-sql-server-2005-using-integration-services/205)
از طریق کد نویسی( برای Sql 2008):
DECLARE @myfile varchar(800)
SET @myfile ='E:\Other\Book1.xlsx'
EXEC('SELECT * INTO dbo.YourTable FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'', ''Excel 12.0;Database='+ @myfile +''', '' SELECT * FROM [Sheet1$]'')')
البته در صورت استفاده از روش آخر حتماً قبلش این لینک (http://www.mssqltips.com/sqlservertip/1673/where-is-the-surface-area-configuration-tool-in-sql-server-2008/) را مطالعه بفرمائید، و گزینه "AdHocRemoteQueriesEnabled" را روی True تنظیم کنید، تا با خطا مواجه نشید.

یوسف زالی
دوشنبه 24 بهمن 1390, 14:53 عصر
سلام.
نیازی به exec نیست.
خود پارامتر های OPENROWSET رشته هست..

Galawij
دوشنبه 24 بهمن 1390, 16:39 عصر
نیازی به exec نیست.
خود پارامتر های OPENROWSET رشته هست..
EXEC را برای نام فایل اکسل به کار بردم...
به صورت پارامتر پاس دادم.

یوسف زالی
دوشنبه 24 بهمن 1390, 16:49 عصر
نه، متوجه منظورم نشدید، خود نام رشته هست. چیزی هم که باهاش جمع می شه رشته هست.
در این صورت نیازی به دوباره رشته کردنش نیست:
SELECT * INTO dbo.YourTable FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database='+ @myfile, 'SELECT * FROM [Sheet1$]')-- sql

Galawij
سه شنبه 25 بهمن 1390, 07:42 صبح
SELECT * INTO dbo.YourTable FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database='+ @myfile, 'SELECT * FROM [Sheet1$]')-- sql اجراش کردم، متأسفانه کار نمی کنه!
بهتره در صورتی که مسیر و نام فایل را به صورت پارامتری می فرستیم از کد پست 4 استفاده کرد و در صورتی که به صورت پارامتری نیست، مستقیماً وارد دستور کرد:
SELECT * INTO dbo.YourTable FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=E:\Other\Book1.xlsx', 'SELECT * FROM [Sheet1$]')

sm4899
چهارشنبه 23 اردیبهشت 1394, 09:20 صبح
با سلام


با اجرای دستورات فوق این پیغام داده میشه

Msg 15281, Level 16, State 1, Line 27

SQL Server blocked access to STATEMENT 'OpenRowset/OpenDatasource' of component 'Ad Hoc Distributed Queries' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Ad Hoc Distributed Queries' by using sp_configure. For more information about enabling 'Ad Hoc Distributed Queries', search for 'Ad Hoc Distributed Queries' in SQL Server Books Online.