Copyright © 2003-2009
By Suthep Sangvirotjanaphat
  Mobile: 089-967-2200, 081-915-7816
Phone: 0-2992-4877   Fax: 0-2992-4878
Fast Contact Us

GreatFriends.Biz Community

Custom Search
Copy เพื่ออ้างอิงถึงข้อความนี้:
 MESSAGE #117281 (อ่าน 1,274 ครั้ง)

Article - Silverlight 4: SQL Data Export to Excel

Tags: C#, .NET 4.0, VS 2010, Article

Silverlight 4: SQL Data Export to Excel

Prerequisites

 

การรันนอกเบราว์เซอร์ของ Silverlight 3 ถูกจำกัดอยู่ในขอบเขตของ sandbox ไม่แตกต่างอะไรกับการรันบนเบราว์เซอร์ แต่มาใน SL4 b1 การรันนอกเบราว์เซอร์ยอมเปิดข้อจำกันบางส่วนของ sandbox เพื่อให้สามารถเข้าถึงข้อมูลบนเครื่องไคลน์เอ็นต์ได้มากขึ้น โดยผ่านการตรวจสอบสิทธิ์ขณะรันแอปพลิเคชัน โดยสิ่งที่ได้รับอนุญาตเปิดสิทธิ์มีดังนี้:

  • Cross domain กับนโยบายการตรวจสอบแฟ้ม
  • การเรียกดูพาธแฟ้มจาก หน้าต่างการเปิด/บันทึก (Open/Save file dialog)
  • การเข้าถึงโฟลเดอร์ผู้ใช้ เช่น MyDocuments
  • Interop COM (บทความกล่าวถึง)
  • สนับสนุน HTML hosting

 

บทความนี้เราจะใช้ SL4 Export ข้อมูลจาก SQL เป็น Excel โดยใช้ฟีเจอร์ Interop COM เพื่อสื่อสาร และส่งข้อมูลไปเป็น Excel โดยใช้ฟีเจอร์ของ C#4.0 ประกอบร่วมด้วย นั่นคือ ฟีเจอร์ Dynamic Language ทำให้เราจะมี Type พิเศษ ขึ้นมาใน C#4.0 คือ dynamic   กล่าวคือถ้า object ใดเป็น dynamic จะสามารถเรียก Method, Property หรือ Index ใดก็ได้ แม้จะไม่มีอยู่จริง ก็จะไม่ Error ณ Design time (แต่ compile-time สิ่งเหล่านั้นที่เรียก ต้องมีอยู่จริง)

และในบทความนี้ผู้เขียนขอใช้ตัวอย่างโปรเจ็กต์จากบทความ: Drag-Drop Data Binding to Silverlight 4 ก่อนหน้านี้มาเป็นตัวอย่างประกอบครับ ตัวอย่างหน้าจอแอปพลิเคชันเป็นดังนี้ 

0

จากรูป:

เมื่อกดปุ่ม Export โปรแกรม Excel จะถูกเปิดพร้อมกับการเขียนข้อมูลใน DataGrid ลง Excel ทีละแถว

 

 

ขั้นตอนการพัฒนาแอปพลิเคชั:

1. จากโปรเจ็กต์ Drag-Drop Data Binding to Silverlight 4 ทำการลากคอนโทรล Button ไปวางหนึ่งอัน

1 

 

2. ก่อนอื่นเราต้องไปทำการเพิ่มการอ้างอิง Microsoft.CSharp.dll เพื่อใช้งานฟีเจอร์ Dynamic Language ซึ่งสามารถพบได้ในพาธ: Program Files/microsoft SDKs/Silverlight/V4.0/Libraries/Client ดังรูป

2

 

3. กำหนดให้ Silverlight รันนอกเบราว์เซอร์ โดยคลิกขวาบนโปรเจ็กต์ Drag-DropDataBindingToSilverlight4 => Properties จะได้หน้าจอดังรูป  จากนั้นคลิกเลือก Enable running application out of the browser  

3

 

4. คลิกเลือก Require elevated trust when running outside the browser เพื่ออนุญาตให้แอปพลิเคชัน เข้าถึง COM Object จากนั้นคลิก OK

4

 

5. ใส่โค้ด: 

private void btExport2Excel_Click(object sender, RoutedEventArgs e)

{

//เป็นการรันนอกเบราว์เซอร์ และได้รับอนุญาตเปิดสิทธิ์

if (App.Current.IsRunningOutOfBrowser && App.Current.HasElevatedPermissions)

if (ComAutomationFactory.IsAvailable) //ได้รับอนุญาต

export2Excel();

}

private void export2Excel()

{

//สร้างอ็อบเจ็กต์ Excel แอปพลิเคชัน ด้วย Type dynamic

dynamic excel = ComAutomationFactory.CreateObject("Excel.Application");

//เปิด Excel

excel.Visible = true;

//เพิ่มใหม่สมุดงาน

excel.Workbooks.Add();

//สร้าง Column excel ในถึงปัจจุบันแผ่นงาน (ActiveSheet)

excel.ActiveSheet.Cells[1, 1].Value2 = "ProductID";

excel.ActiveSheet.Cells[1, 2].Value2 = "ProductName";

excel.ActiveSheet.Cells[1, 3].Value2 = "QuantityPerUnit";

excel.ActiveSheet.Cells[1, 4].Value2 = "UnitPrice";

excel.ActiveSheet.Cells[1, 5].Value2 = "UnitsInStock";

excel.ActiveSheet.Cells[1, 6].Value2 = "UnitsOnOrder";

excel.ActiveSheet.Cells[1, 7].Value2 = "Discontinued";

//ลูบดึงข้อมูลบน DataGrid

//แปลงอ็อบเจ็กต์เป็น Products

int xrow = 1;

foreach (Products p in productsDataGrid.ItemsSource.Cast<Products>())

{

//เขียนข้อมูลลง Excel ในถึงปัจจุบันแผ่นงาน (ActiveSheet)

xrow++;

excel.ActiveSheet.Cells[xrow, 1].Value2 = p.ProductID;

excel.ActiveSheet.Cells[xrow, 2].Value2 = p.ProductName;

excel.ActiveSheet.Cells[xrow, 3].Value2 = p.QuantityPerUnit;

excel.ActiveSheet.Cells[xrow, 4].Value2 = p.UnitPrice;

excel.ActiveSheet.Cells[xrow, 5].Value2 = p.UnitsInStock;

excel.ActiveSheet.Cells[xrow, 6].Value2 = p.UnitsOnOrder;

excel.ActiveSheet.Cells[xrow, 7].Value2 = p.Discontinued;

}

}

 

6. ทดสอบรันแอปพลิเคชัน ทำการติดตั้งให้แอปพลิเคชันรันนอกเบราว์เซอร์ โดยการคลิกขวา => Install Drag-DropDataBindingToSilve… onto this computer

5

 

7. ติ๊กเลือก Start menu และ Desktop เพื่อสร้าง shortcut ไว้ที่ Start menu และ Desktop จากนั้นคลิก Install

6

เราจะได้ shortcut  บน Desktop และ Start menu

xx xx2

 

8. แอปพลิเคชันรันนอกเบราว์เซอร์ จะถูกเปิดขึ้น  จากนั้นกดปุ่ม Export จะทำการเปิด Excel และเขียนข้อมูลลง Excel

7

ข้อมูล Excel

11

 

9. เราสามารถดีบั๊กแอปพลิเคชันรันนอกเบราว์เซอร์ได้ โดยคลิกที่แท็บ Debug ติ๊กเลือก Installed out-of-browser application

9

 

10. กำหนดให้ รันโปรเจ็กต์ Drag-DropDataBindingToSilverlight4 เป็นโปรเจ็กต์แรก โดยคลิกขวา => Set as StartUP Project

10

 

เพียงเท่านี้เราก็สามารถใช้ Silverlight Export ข้อมูลเป็น Excel ได้เสมือนใช้โปรแกรม Windows App. กันแล้ว

 

แหล่งข้อมูลดาวน์โหลด:

 

แหล่งข้อมูลอ้างอิง:

ผู้เขียน:
nano_mvp_2009_1
 


nano วันที่ส่ง: 4 ธ.ค. 52 17:36 GMT+7
วันที่ปรับล่าสุด: 11 ม.ค. 53 21:36 GMT+7
REPLY #1 (117736)
ขอบคุณมากครับคุณ Nano 
 
เป็นเทคโนโลยีในอนาคตจริงๆ ตอนนี้จะพยายามค่อยๆ  ศึกษาทีละเล็กทีละน้อย ในอนาคตพวกเราได้ใช้แน่ครับ ขึ้นอยู่ว่าช้าหรือเร็ว ปี 53 หรือ 54 ดีครับ สำหรับ WPF & Silverlight Software Factory รันบน VS 2010 เลยทีเดียว
(ของเก่ายังปั่นออกมายังไม่หมดเลย)

 



Joausal วันที่ส่ง: 20 ธ.ค. 52 21:03 GMT+7
วันที่ปรับล่าสุด: 20 ธ.ค. 52 21:03 GMT+7
REPLY #2 (118261)
น่าสนใจมากเลยครับ


kuraynai วันที่ส่ง: 11 ม.ค. 53 21:36 GMT+7
วันที่ปรับล่าสุด: 11 ม.ค. 53 21:36 GMT+7

ตอบข้อความ/ร่วมแสดงความคิดเห็น

กรุณา Sign In / เข้าสู่ระบบ เพื่อโพสต์หรืออ่านข้อความ
ยังไม่ได้สมัครสมาชิก? Sign Up / สมัครสมาชิกใหม่
10 ก.ย. 09:04
Online: 257