以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如何将XML提取到EXCEL中?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=159890)

--  作者:wh420
--  发布时间:2021/1/12 15:27:00
--  如何将XML提取到EXCEL中?
以下是XML文件内容,如何将XML提取到EXCEL中?
<?xml version="1.0" encoding="GB2312"?>
<Data INFO="YIKAIFAPIAO">
    <YKFP>
        <Row 发票号码="12345643" 原发票号码="" 税额="99.01" 作废日期="" 发票类型="增值税专用发票" 发票代码="1111111111" 开票日期="2020-06-29" 合计金额="9900.99" 主要商品名称="服务费" 价税合计="10000" 客户名称="客户A"/>
        <Row 发票号码="12342623" 原发票号码="" 税额="29.89" 作废日期="" 发票类型="增值税专用发票" 发票代码="1111111111" 开票日期="2020-06-23" 合计金额="2989.11" 主要商品名称="*服务费" 价税合计="3019" 客户名称="客户B"/>
    </YKFP>
</Data>

--  作者:有点蓝
--  发布时间:2021/1/12 15:30:00
--  
参考:http://www.foxtable.com/mobilehelp/topics/0171.htm
--  作者:wh420
--  发布时间:2021/1/12 16:05:00
--  

我看了一下帮助还论坛贴子觉得这个比较好理解,但执行中出错,麻烦老师给看看。没有结果

For Each f As String In FileSys.GetFiles("E:\\已开发票\\新建文件夹")
    Dim txt As String = FileSys.ReadAllText(f, Encoding.utf8)
    Dim xmlDoc As New System.XML.XmlDocument
    xmlDoc.Loadxml(txt.Trim)
    Dim ndList  = xmlDoc.GetElementsByTagName("YKFP")
    For Each dr As object In ndlist
        Dim ndr As Row = Tables("表A").addnew
        For Each n As System.XML.XmlNode In dr.childNodes
            output.show(n.Name & " = " & n.InnerText)
            If n.name = "发票号码" Then
                ndr("第一列") = n.innertext
            End If
            If n.name = "税额" Then
                ndr("第二列") = val(n.innertext)
            End If
        Next
    Next
Next

--  作者:有点蓝
--  发布时间:2021/1/12 16:17:00
--  
自行研究:https://docs.microsoft.com/zh-cn/dotnet/api/system.xml.xmldocument?redirectedfrom=MSDN&view=netframework-4.7.2

Dim s As String = "<?xml version=""1.0"" encoding=""GB2312""?><Data INFO=""YIKAIFAPIAO"">    <YKFP>        <Row fapiao号码=""12345643"" 原fapiao号码="""" 税额=""99.01"" 作废日期="""" fapiao类型=""增值税专用fapiao"" fapiao代码=""1111111111"" 开piao日期=""2020-06-29"" 合计金额=""9900.99"" 主要商品名称=""服务费"" 价税合计=""10000"" 客户名称=""客户A""/>        <Row fapiao号码=""12342623"" 原fapiao号码="""" 税额=""29.89"" 作废日期="""" fapiao类型=""增值税专用fapiao"" fapiao代码=""1111111111"" 开piao日期=""2020-06-23"" 合计金额=""2989.11"" 主要商品名称=""*服务费"" 价税合计=""3019"" 客户名称=""客户B""/>    </YKFP></Data>"

Dim xo As Foxtable.XObject = Foxtable.XObject.Parse(s)
Output.Show(xo.Tostring)

Output.Show(xo("YKFP")("Row")(0)("@fapiao号码").tostring)

--  作者:wh420
--  发布时间:2021/1/12 16:22:00
--  
太难了,看不懂啊。我的这个XML一条数据都在同一行,怎么提一行(一条)中的不同字段中的内容》?
--  作者:有点蓝
--  发布时间:2021/1/12 16:29:00
--  
Output.Show(xo("YKFP")("Row")(0)("@fapiao号码").tostring)
Output.Show(xo("YKFP")("Row")(0)("@税额").tostring)

--  作者:wh420
--  发布时间:2021/1/12 16:50:00
--  
这个对我来说还有些复杂。我想换个思路,如果用“Syscmd.Project.ImportFromXML()”这系统命令来实现导入是没问题的,但执行这个命令的时候会弹出菜单让选择路径并选择表,我想用代码固定路径和表名,然后直接就倒入到FOXTABLE表中?不需要弹出窗口选择如何实现?
[此贴子已经被作者于2021/1/12 16:55:41编辑过]

--  作者:有点蓝
--  发布时间:2021/1/12 17:02:00
--  
这个没有办法,内置的功能,改不了
--  作者:wh420
--  发布时间:2021/1/12 22:07:00
--  
Import我看有导入命令,都是针对ACCESS的或dbf的怎么没有针对XML的?