[ 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 |
|
0 comments |
Last Update : 21 ตุลาคม 2548 2:30:47 น. |
Counter : 722 Pageviews. |
|
|
|