พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com
ASP, ASP.NET Articles / การอ่านเอกสาร Microsoft Excel ด้วย OleDB
Administrator
Mon 22 May 2006 23:24:11
ช่วงนี้เอาบทความสั้นๆ เป็น Tip ในการใช้งาน ASP.NET เพื่ออ่านข้อมูลในเอกสาร Microsoft Excel โดยใช้ OleDB ครับ

//ประกาศตัวแปร connectionstring เพื่อใช้ติดต่อไปยังเอกสาร Microsoft Excel โดยตัวสีแดง เป็น Path ของไฟล์ครับ
String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\myfile.xls;Extended Properties=Excel 8.0;";

//จากนั้นสร้าง OleDB Connection เพื่อใช้ติดต่อไปยังเอกสาร Microsoft Excel จาก Connectionstring ที่ได้ประกาศไว้
        OleDbConnection objConn = new OleDbConnection(sConnectionString);

//ทำการเปิด Connection
        objConn.Open();

//ใช้คำสั่ง SELECT เพื่อ Query ข้อมูลจากเอกสารชื่อ Sheet1 ถ้าตั้งชื่อ Sheet ไว้ก็แก้เป็นชื่อเอกสารนั้นๆตามด้วย $ (Dollar sign)
        OleDbCommand objCmdSelect =new OleDbCommand("SELECT * FROM [Sheet1$]", objConn);

//ใช้งาน OleDbAdapter
        OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();

//Assign คำสั่งที่ใช้ในการ Query ลงใน SelectCommand
        objAdapter1.SelectCommand = objCmdSelect;

//สร้าง DataSet เพื่อใช้บรรจุข้อมูลที่อ่านออกมาทั้งหมด
        DataSet objDataset1 = new DataSet();

//ทำการบันทึกข้อมูลทั้งหมดลงใน DataSet
        objAdapter1.Fill(objDataset1);
        
//ทำการปิดการติดต่อ
        objConn.Close();

จากโค๊ดข้างต้นเราก็สามารถนำข้อมูลที่อยู่ใน DataSet ไปใช้งานต่อได้ทันทีครับ
Blue
Blue
Fri 7 Jul 2006 11:24:16

เยี่ยมมากครับ กำลังศึกษาพอดี ว่าแต่ถ้าผมจะเพิ่ม ลบ แก้ไข Sheet1 จะทำยังไงครับพอมีแนวทางมั้ย

Administrator
Fri 7 Jul 2006 11:53:52
การเพิ่มหรือแก้ไขสามารถใช้งาน ADO.NET ได้เหมือนกันครับ

การ insert ทำเหมือนการใช้งานฐานข้อมูลทั่วไปได้เลยครับ เพียงแต่ค่าต้องคร่อมด้วย " (Double-quote) เท่านั้นครับ

conn.Open();
OleDbCommand cmd = new OleDbCommand("INSER INTO [Sheet1$](field1, field2) VALUES(\"value1\", \"value2\")", conn);
cmd.ExecuteNonQuery();
conn.Close();

การ update ก็เช่นเดียวกันครับ

conn.Open();
OleDbCommand cmd = new OleDbCommand("UPDATE [Sheet1$] SET field1=\"value3\" WHERE ID=1", conn);
cmd.ExecuteNonQuery();
conn.Close();
Blue
Blue
Fri 7 Jul 2006 15:00:04

ผมมีกรณีตัวอย่างแบบนี้ครับ คือต้องการ access ข้อมูลใน Excel ขณะที่ไฟล์ Excel ยังเปิดใช้งานอยู่เนื่องจากว่า Field ที่ต้องการดึงมาใช้งานนั้นมีสูตรคำนวนที่มีการประมวลผลตลอดเวลา แต่จากการทำสอบโดบการเขียน ASP ติดต่อปรากฏว่าไม่สามารถดึงข้อมูลมาได้เนื่องจากว่าไฟล์นี้ถูกใช้งานอยู่ อยากรู้ว่ามีวิธีการเขียนยังไงให้สามารถทำการติดต่อกับ Excel ที่เปิดใช้งานอยู่ได้ครับ จะเป็น ASP PHP หรือ .NET ก็ได้ครับ ช่วยแนะนำหน่อย

Administrator
Sat 8 Jul 2006 09:55:02
ผมยังไม่เห็น Solution ที่แก้ปัญหาของคุณได้เลยครับ
Reply
Name:
E-mail:
Home | Services | Forum | Classified | Directories | Support | Contact
ATOM feed RSS 0.9 feed RSS 1.0 feed RSS 2.0 feed
Copyright © 2005 - 2007 Modoeye.com, All Rights Reserved.
Disclaimer | Privacy policy | Term of Use | Term of Services
Valid XHTML Valid CSS! PHP: Hypertext Preprocessor MySQL database Apache Powered! FreeBSD Power to serve
Modoeye Sitemap Client login