以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 求助:多个表组合生成一个XML文件,已实现单个工作表生成实现XML,求助多个工作表怎么实现按照“起诉书编号”这个关联字段来对应生成XML文件呢? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=92338) |
||||
-- 作者:李孝春 -- 发布时间:2016/11/1 9:54:00 -- 求助:多个表组合生成一个XML文件,已实现单个工作表生成实现XML,求助多个工作表怎么实现按照“起诉书编号”这个关联字段来对应生成XML文件呢? 单个工作表运行代码如下 Dim xls As String = "D:/收案信息.xls" Dim book As new XLS.Book(xls) Dim sheet As XLS.Sheet= book.Sheets(0) Dim xml As String = "D:/收案信息.xml" Try Dim writer As New Xml.XmlTextWriter(xml, System.Text.Encoding.GetEncoding("utf-8")) writer.Formatting = System.Xml.Formatting.Indented \'书写根元素() writer.WriteStartElement("case") For i As Integer = 1 To sheet.Rows.count -1 \'添加次级元素 writer.WriteStartElement("caseRegistration") For j As Integer = 0 To sheet.Cols.count -1 \'添加子元素() writer.WriteElementString(sheet(0,j).value,sheet(i,j).value) Next \'关闭次级元素DatabaseSetting writer.WriteEndElement() Next \'关闭根元素 writer.WriteFullEndElement() \'将XML写入文件并关闭writer writer.Close() Catch ex As Exception MsgBox(ex.Message & vbCrLf & ex.StackTrace) End Try 以上代码运行生成的XML文件如下: <case> <caseRegistration> <suitDocNumber>1</suitDocNumber> <number1>221</number1> <name1>22</name1> <submittedDate>2016/10/26</submittedDate> <number>222</number> <name>22</name> <suggestedProcedure>普通程序</suggestedProcedure> <penalty>死刑</penalty> <minDuration>2</minDuration> <maxDuration>2</maxDuration> <involvedAmount>2</involvedAmount> <isTeen>1</isTeen> <description>222</description> <path>2222</path> </caseRegistration> </case>
求助多个工作表,或者是一个工作簿下多个工作表怎么实现按照“起诉书编号”这个关联字段来对应生成XML文件呢? 一个起诉书编号生成一个XML文件。
[此贴子已经被作者于2016/11/1 9:54:27编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2016/11/1 10:48:00 -- 类似 Dim xls As String = "F:\\H\\问题测试/工作簿.xls" Dim book As new XLS.Book(xls) Dim sheet As XLS.Sheet= book.Sheets(0) Dim xml As String = "F:\\H\\问题测试/工作簿.xml" Try Dim writer As New Xml.XmlTextWriter(xml, System.Text.Encoding.GetEncoding("utf-8")) writer.Formatting = System.Xml.Formatting.Indented \'书写根元素() writer.WriteStartElement("case") For i As Integer = 1 To sheet.Rows.count -1 \'添加次级元素 writer.WriteStartElement("caseRegistration") For j As Integer = 0 To sheet.Cols.count -1 \'添加子元素() writer.WriteElementString(sheet(0,j).value,sheet(i,j).value) Next Dim sheet2 As XLS.Sheet= book.Sheets(1) For i2 As Integer = 1 To sheet2.Rows.count -1 If sheet2(i2,0).value = sheet(i,0).value \'添加次级元素 writer.WriteStartElement("提交材料") For j2 As Integer = 0 To sheet2.Cols.count -1 \'添加子元素() writer.WriteElementString(sheet2(0,j2).value,sheet2(i2,j2).value) Next \'关闭次级元素DatabaseSetting writer.WriteEndElement() End If Next \'关闭次级元素DatabaseSetting writer.WriteEndElement() Next \'关闭根元素 writer.WriteFullEndElement() \'将XML写入文件并关闭writer writer.Close() Catch ex As Exception MsgBox(ex.Message & vbCrLf & ex.StackTrace) End Try |
||||
-- 作者:李孝春 -- 发布时间:2016/11/1 14:41:00 -- 回复:(有点蓝)类似Dim xls As String = "F:\H\问题... 参照代码如下:结果出错! Dim xls As String = "d:/工作簿.xls" Dim book As new XLS.Book(xls) Dim sheet As XLS.Sheet= book.Sheets(0) Dim xml As String = "d:/工作簿.xml" Try Dim writer As New Xml.XmlTextWriter(xml, System.Text.Encoding.GetEncoding("utf-8")) writer.Formatting = System.Xml.Formatting.Indented \'书写根元素() writer.WriteStartElement("case") Dim sheet2 As XLS.Sheet= book.Sheets(1) \'定义打开当前工作簿中的第二个工作表 For i2 As Integer = 1 To sheet2.Rows.count -1 If sheet2(i2,0).value = sheet(i2,0).value \'添加次级元素 writer.WriteStartElement("suitDocNumber") For j2 As Integer = 0 To sheet2.Cols.count -1 \'添加子元素() writer.WriteElementString(sheet2(0,j2).value,sheet2(i2,j2).value) Next \'关闭次级元素DatabaseSetting writer.WriteEndElement() End If Next Dim sheet As XLS.Sheet= book.Sheets(2) \'定义打开当前工作簿中的第三个工作表 For i As Integer = 1 To sheet.Rows.count -1 If sheet(i,0).value = sheet(i,0).value \'添加次级元素 writer.WriteStartElement("suitDocNumber") For j As Integer = 0 To sheet.Cols.count -1 \'添加子元素() writer.WriteElementString(sheet(0,j).value,sheet2(i,j).value) Next \'关闭次级元素DatabaseSetting writer.WriteEndElement() End If Next \'关闭次级元素DatabaseSetting writer.WriteEndElement() \'关闭根元素 writer.WriteFullEndElement() \'将XML写入文件并关闭writer writer.Close() Catch ex As Exception MsgBox(ex.Message & vbCrLf & ex.StackTrace) End Try |
||||
-- 作者:有点蓝 -- 发布时间:2016/11/1 14:44:00 -- WriteStartElement和WriteEndElement要成对出现,而且不能交叉嵌套,自己找找 |
||||
-- 作者:李孝春 -- 发布时间:2016/11/1 17:05:00 -- 回复:(有点蓝)WriteStartElement和WriteEndElement... Next \'关闭次级元素DatabaseSetting writer.WriteEndElement() \'关闭根元素 writer.WriteFullEndElement() \'将XML写入文件并关闭writer 经查 红色部分重复了 删掉后解决了 采用下面代码初步实现多个表生成一个XML文件: 经过比对后,初步实现多个工作表生成一个XML文件, 有没有办法实现,用节点名称中的内容来取代我手动输入的节点呢? 注意:同一个起诉书编号下,会对应多个这样的节点名称,要求都能够显示出来。
[此贴子已经被作者于2016/11/1 17:08:18编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2016/11/1 17:59:00 -- 试试 Dim sheet130 As XLS.Sheet= book.Sheets(0) \'定义打开当前工作簿中的第1个工作表 For i As Integer = 1 To sheet130.Rows.count -1 If sheet130(0,2).value = "节点名称" And sheet130(i,2).value > "" writer.WriteStartElement(sheet130(i,2).value) Else \'添加次级元素 writer.WriteStartElement("suitDocNumber") End If For j As Integer = 0 To sheet130.Cols.count -1 \'添加子元素() writer.WriteElementString(sheet130(0,j).value,sheet130(i,j).value) Next \'关闭次级元素DatabaseSetting writer.WriteEndElement() Next 另外If sheet1(i,0).value = sheet1(i,0).value这类代码多余的,去掉
|