国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

在Microsoft Office System中使用ADO.NET數據集(五)

2024-07-10 13:03:17
字體:
來源:轉載
供稿:網友
將dataset作為xml導入到excel工作表

microsoft office excel 2003為xml提供了非常強大的支持,它允許你將工作簿保存為xml或者將xml數據源導入到工作簿。由于dataset天生就序列化為xml,所以你可以非常容易的將它的數據導入到excel中。導入步驟需要xml架構,這樣excel才能夠將數據映射到工作簿的適當單元格,而dataset自動提供了這個功能。事實上,這就是本文前面描述的getdataset方法的結尾處所添加的代碼的功能,這些代碼將dataset對象的數據和架構寫到磁盤上。

if bsaveschema then

'places the file in this app's bin directory

ds.writexmlschema("customers.xsd")

ds.writexml("customers.xml")

end if

這段代碼在應用程序的bin文件夾創建xml和架構文件。圖5顯示xml文件的結果。



圖5:使用dataset的writexml方法生成的customers.xml文件

圖6顯示xml架構,也是在internet explorer顯示。



圖6:使用dataset的writexmlschema方法生成的customers. xsd文件

這項技術也可以用在excel中的一個新特性上,這個對象叫做listobject,它是一個列表結構的新類型,本質上它提供數據的完整視圖。結果列表顯示在圖7中。你可以單擊標題行的下拉列表對整個列表數據進行篩選和排序。圖中的xml源面板顯示了該數據的架構,你可以通過修改該架構來決定列表中可以包含那些數據。



圖7 使用xml架構映射以編程方式導入xml

buildxmlmap子過程執行與buildworksheet相似的功能,但是它使用xml導入和映射來將數據從dataset移動到excel中。該過程接收一個dataset作為其唯一參數,然后實例化excel、添加一個工作簿,同事執行其他ui(用戶界面)任務。例子中的工作簿名為northwind customers。當然,你可以將它替換為你自己的工作簿的名字。

private sub buildxmlmap(byval ds as dataset)

'create an instance of excel 2003, add a workbook,

'and let the user know what's happening

dim xl as new excel.application

xl.workbooks.add()

xl.activesheet.name = "northwind customers"

xl.visible = true

xl.range("a1").value = "loading the dataset...."

該過程直接從dataset對象加載xml數據,但是沒有任何方法可以直接從內存中讀取其架構。因此這段代碼使用.net framework path 對象的getfullpath方法為.xsd架構文件獲取了一個完整路徑和文件名。

try

dim smap as string = system.io.path.getfullpath("customers.xsd")

然后,代碼添加xml映射架構到當前活動工作簿的xmlmaps集合。add方法的第一個參數是將要被映射的文件的位置,第二個參數是存儲于集合中的這個映射的名字。代碼設置了該映射的名字,以便在后面引用這個映射。

'add the map to the active workbook

'you can only add a map from a disk file.

xl.activeworkbook.xmlmaps.add(smap, _

"northwindcustomerorders").name _

= "northwindcustomerorders_map"

代碼得到這個新建的xml映射的引用,將它保存為映射變量,然后添加一個listobject到當前活動工作表。你所選擇的列表面板列,本示例中是列a到j,包括標題行下面的許多行都是用來容納數據的。

'specify the cells where the mapped data should go upon import

dim map as excel.xmlmap = _

xl.activeworkbook.xmlmaps("northwindcustomerorders_map")

xl.range("a1", "j1").select()

dim list as excel.listobject = _

ctype(xl.activesheet, excel.worksheet).listobjects.add

下一步是映射xml數據的特定元素到列表的每個列。setvalue方法持有所使用的映射的引用,并使用一個xpath表達式來指示哪些元素保存在哪一列。下面的代碼設置列a容納customerid元素,然后設置該列標題為“customer id”。你可以設置以相同方式設置其他列的內容和標題。

list.listcolumns(1).xpath.setvalue(map, _

"/northwindcustomerorders/customers/customerid")

xl.range("a1").value = "customer id"

現在要設置listobject的結構,因為下一步將導入xml數據。import方法讀取磁盤文件,并且這里使用importxml方法直接從dataset 的getxml方法中讀取xml,并未將xml數據保存到磁盤上。該過程在最后打開“xml源”任務面板,方便你查看。

'import the xml data

xl.activeworkbook.xmlmaps("northwindcustomerorders_map"). _

importxml(ds.getxml)



'open the xml source task pane

xl.displayxmlsourcepane(map)



catch ex as exception



end try



end sub


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临漳县| 汤阴县| 色达县| 清原| 咸阳市| 封开县| 邻水| 专栏| 若羌县| 大连市| 乐陵市| 太康县| 诏安县| 湘潭市| 辽宁省| 潞西市| 永泰县| 文安县| 谷城县| 碌曲县| 平和县| 华容县| 吕梁市| 建宁县| 龙里县| 奉节县| 屏山县| 娄底市| 万盛区| 惠安县| 锡林浩特市| 大姚县| 龙口市| 横峰县| 三河市| 全椒县| 苍梧县| 中方县| 屏南县| 秦皇岛市| 五常市|