Silverlight 4: SQL Data Export to Excel


Prerequisites

 sl4bloglogo_0DE0BF1F

การรันนอกเบราว์เซอร์ของ 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 เข้ามาในโปรเจ็กต์ Silverlight ก่อนเพราะเราต้องใช้งาน ฟีเจอร์ Dynamic Language ของ C#4.0 ซึ่งสามารถพบได้ในพาธ: 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 เพราะการเข้าถึง COM อ็อบเจ็กต์ได้ต้องรันแอปพลิเคชันนอกเบราว์เซอร์

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. กันแล้ว

 

แหล่งข้อมูลดาวน์โหลด:
http://cid-7d608959d854cb28.skydrive.live.com/embedicon.aspx/SourcesCode/12-04-2009_Drag-DropDataBindingToSilverlight4_SQLDataExportToExcel.zip

 

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

ผู้เขียน:
nano_mvp_2009_1

Advertisements
เกี่ยวกับ

Nuchit Atjanawat is a Microsoft MVP, GreatFriends Community Leader, WindowsITPro Columnist(Mr.Nano), Silverlight Business Application Instructor, Speaker in various Microsoft events, Author, passionate Blogger and a Software Engineer by profession. He has a very good skill over Silverlight, LightSwitch, C#, XAML & Blend. He shares his technical findings, tutorials in his technical blog. Follow his Blog and Facebook page to be updated on latest articles. - Technical Blog: https://janawat.wordpress.com - WindowsITPro Columnist(Mr.Nano): http://windowsitpro.net - The GreatFriends.Biz Community Discussion Board (nano): http://greatfriends.biz - witter: https://twitter.com/janawat - Facebook Page: https://www.facebook.com/nuchit - Instructor: http://bit.ly/GF250-01, http://bit.ly/GF150-02

เขียนใน Silverlight

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s

In Archive
%d bloggers like this: