[ C# ] Copy Data ลงใน Clipboard เพื่อไป Paste ใน Excel
โปรแกรมที่เราเขียน ในบางครั้งมีลักษณะการเก็บข้อมูลแบบตาราง เช่นข้อมูลที่แสดงผลใน DataGrid การที่จะให้ User สามารถ Copy Data ออกไปเพื่อนำไปคำนวนหรือทำอย่างอื่นเพิ่มเติมใน Microsoft Excel นั้นก็สามารถทำได้ วิธีการหนึ่งที่ง่ายก็คือใช้การ Copy - Paste

การ Copy ข้อมูลจากในโปรแกรมลงไป Paste บน Excel จะต้องทำการ นำ Data ที่ต้องการเข้าไปใส่ไว้ใน System Clipboard ซึ่ง Data ที่จะสามารถเอาลงไป Paste บน Excel ได้ จะต้องเป็น Data ที่มี Format เป็น Comma Separated หรือเรียกอีกอย่างว่า Comma Separated Value

Comma Separated Value ก็คือข้อมูลที่จัดเรียงกันเป็นลักษณะตาราง โดยมีเครื่องหมาย Comma เป็นตัวคั่นระหว่าง Column และมีการ ขึ้นบรรทัดใหม่ สำหรับ Row ใหม่ ตัวอย่างเช่น

0,1,2,3
4,5,6,7

ลักษณะข้างบนนี้คือข้อมูล 2 row 4 column เราจะต้องจัดเรียงข้อมูลให้เป็น string ที่อยู่ในลักษณะนี้ก่อน ก่อนที่จะนำไปใส่ลงใน Clipboard โดยเราวสามารถใช้ class StringBuilder มาช่วยในการสร้าง string ได้ แทนที่จะใช้การ Concat



StringBuilder sb = new StringBuilder();
sb.Append("0,1,2,3");
sb.Append(Environment.NewLine);
sb.Append("4,5,6,7");
sb.Append(Environment.NewLine);
sb.Append((char)0); //สำคัญ

string finalString = sb.ToString();



บรรทัดนี้ sb.Append((char)0); เป็นบรรทัดที่สำคัญมาก ตัว char 0 นี้เรียกว่า string terminator สำหรับโปรแกรมพวก excel จะต้องมีตัวนี้ปิดท้ายด้วย ถ้าไม่มี บางครั้งจะทำงานผิดพลาด

เมื่อได้ข้อมูลที่อยู่ในรูป CSV พร้อมแล้ว ก็จับมันใส่ลงไปใน System Clipboard ด้วย code ด้านล่างนี้



byte[] blob = System.Text.Encoding.UTF8.GetBytes(finalString); //finalString จากด้านบน
MemoryStream s = new MemoryStream(blob);
DataObject data = new DataObject();
data.SetData(DataFormats.CommaSeparatedValue,s);
Clipboard.SetDataObject(data);



เท่านี้ก็เรียบร้อยครับ Data ก็จะพร้อม อยู่ใน Clipboard สามารถเอาไป Paste ใน Excel ได้เลย



Create Date : 21 ตุลาคม 2548
Last Update : 21 ตุลาคม 2548 2:30:47 น.
Counter : 1018 Pageviews.

0 comments
นมัสการพระองค์ปฐม ณ วัดหลวงพ่อสด ดำเนินสะดวก ราชบุรี newyorknurse
(5 ม.ค. 2569 07:24:56 น.)
PETRONAS Malaysia Open 2026 The Kop Civil
(12 ม.ค. 2569 10:26:53 น.)
Taiwan 1st Touch D2 : National Taiwan Museum Of Comic mariabamboo
(11 ม.ค. 2569 16:25:56 น.)
4 มค 69 โครงการอนุรักษ์กล้วยไม้รองเท้านารีอินทนนท์ mcayenne94
(4 ม.ค. 2569 21:47:02 น.)
ชื่อ :
Comment :
 *ใช้ code html ตกแต่งข้อความได้เฉพาะสมาชิก
 

Note.BlogGang.com

RotoTheHERO
Location :
ปทุมธานี  Thailand

[ดู Profile ทั้งหมด]
 ผู้ติดตามบล็อก : 1 คน [?]