ช่วยเอาข้อมูลใน Excel ลง Database ให้หน่อยสิ
งานมาอีกแล้วทำไงดีหว่า เอาง่ายๆเลยไหม ก็เปิด Excel แล้วก็ Copy วางไปโลด แมะก็ง่ายไป 😀😀😀 ไม่ๆๆ คือต้องการทำผ่าน SQL Server อ่ะ เอาไงดี
---- งั้นก็จัดไปตามคำเรียกร้อง ไหนๆทำไงบ้างนะ มาดูวิธีการทำกันดีกว่า
เตรียมสภาพแวดล้อมรอบข้างก่อนเลย อย่างไงอ่ะ !!!
เตรียมทำไม ? ไม่เตรียมได้ไหม !!!!
ก็ได้นะแต่มันจะ Error แบบนี้ไง
"Cannot create an instance of OLE DB provider Microsoft.Jet.OLEDB.4.0 for linked server null"
ฉะนั้นก็จงทำตาม ดังนี้
1. ก็ต้องมี MS SQL SERVER กับ OFFICE ในเครื่องก่อนละ (มันจะทำก็ต้องมีแหละเนอะ 😷😠)** เครื่องที่ผมใช้ในการทดสอบนี้ ลง MS SQL SERVER 2012, Office 2013
2. ก็ต้องติดตั้ง Data Connectivity Components ในเครื่องสะก่อนนะ (ก็ไอ่พวก Microsoft.Ace.OLEDB ไง)
** Download มาให้ถูกต้องละ 32 bit หรือ 64 bit ดูให้ดีนะ
เอาจากที่นี้อ่ะ: Microsoft Access Database Engine 2010
3. ก็ตรวจสอบชื่อ Log on เข้า MS SQL Server ด้วยว่ามีสิทธิการเข้าถึง Temp Directory ไหม (C:\Users\ชื่อผู้ใช้อ่ะ\AppData\Local\Temp ต้องไม่เช็คถูกที่ Read Only อ่ะ)
** ส่วนใหญ่ก็ชื่อที่เราเข้าใช้เครื่องเราอ่ะ ต้องมีสิทธิเป็น Administrator นะ
4. ต้องทำการเปิด Config การทำงานกับ Microsoft.Ace.OLEDB ใน MS SQL Server เสียก่อนนะ ใช้คำสั่งข้างล่างนี้นะ
** ไอ่เจ้า parameter 'DynamicParameters' อาจจะไม่ใช่ชื่อนี้ก็ได้นะ ให้เข้าไปดูใน procedure sp_MSset_oledb_prop ดูก่อนนะ (มันจะอยู่ใน database master อ่ะตรง System Stored Procedures อ่ะ)
หรือลองตรวจสอบดูจาก Server Object - Linked Servers - Providers
หรือใช่คำสั่ง
EXECUTE MASTER.dbo.xp_enum_oledb_providers
5. ทำการลงทะเบียนไฟล์ msexcl40.dll วิธีการก็ ให้นำคำสั่งข้างล่างเนี๊ยไป Run/Search (คงไม่ต้องบอกนะว่าทำไง)
regsvr32 c:\Windows\SysWOW64\msexcl40.dll
6. จากนั้นก็ต้องใช้คำสั่งในการดึงข้อมูลออกมาละนะ
** อธิบายหน่อยละกัน สั้นๆ ก็ใช้คำสั่ง OPENROWSET ในการเรียกใช้งาน จากนั้นก็ใช้ Jet Database Engine เข้ามาใช้งานในการติดต่อกับ Excel ในส่วน Database นั้นก็คือ ที่อยู่ของไฟล์ที่ต้องการนั่นละ ส่วน [A$] อันนี้คือชื่อ Sheet ใน Excel อ่ะนะ
Application Version = Jet Version
- Microsoft Access 2003 = Jet 4.0
- Microsoft Access 2007 = ACE 12
- Microsoft Access 2010 = ACE 14 * เท่าที่ลองดูใช้ 12 ก็ยังได้อยู่นะ
- Microsoft Access 2013 = ACE 15 * เท่าที่ลองดูใช้ 12 ก็ยังได้อยู่นะ
เอาละต่อไปก็จะเป็นการ Insert เข้าสู่ตารางเพื่อเอาไว้ทำข้อมูลต่างๆ นาๆ หรือนำไปทำอะไรก็แล้วแต่เหอะ 😊😊😊😊
จบคำสั่งจากนี้ไป จะทำไรกับข้อมูลก็สุดแล้วแต่....ละนะ! 🐵
ขอบคุณมากครับ เป็นประโยชน์มากครับ
ตอบลบ