我正在寻找一种将电子表格文件(开放式办公室)转换为与LabVIEW集群相对应的XML格式的自动方法,并将其作为XML文件导入。
我被建议使用Python将电子表格转换为XML,但是我使用Python的经验非常有限。我尝试在线查找示例,但大多数是针对XML到电子表格而不是相反的方式。
有没有人就如何将电子表格中的值自动转换为设置的XML格式提出任何建议?
非常感谢任何帮助!
所需的XML格式如下:
<LVData><Version>16.0</Version>
<Cluster><Name>CVT File Data</Name>
<NumElts>2</NumElts>
<Array>
<Name>Tags</Name>
<Dimsize>3</Dimsize>
<Cluster>
<Name>Tag</Name>
<NumElts>4</NumElts>
<EW><Name>Data Type</Name>
<Choice>Double</Choice>
<Choice>Single</Choice>
<Choice>I64</Choice>
<Choice>I32</Choice>
<Choice>I16</Choice>
<Choice>I8</Choice>
<Choice>U64</Choice>
<Choice>U32</Choice>
<Choice>U16</Choice>
<Choice>U8</Choice>
<Choice>String</Choice>
<Choice>Boolean</Choice>
<Choice>Array of U8</Choice>
<Choice>Array of U16</Choice>
<Choice>Array of U32</Choice>
<Choice>Array of U64</Choice>
<Choice>Array of I64</Choice>
<Choice>Array of I32</Choice>
<Choice>Array of I16</Choice>
<Choice>Array of I8</Choice>
<Choice>Array of Double</Choice>
<Choice>Array of Single</Choice>
<Choice>Array of Boolean</Choice>
<Choice>Array of String</Choice>
<Val>11</Val></EW>
<String>
<Name>Name</Name>
<Val>91Q0-st-CL</Val>
</String>
<String>
<Name>Value</Name>
<Val>T</Val>
</String>
<String>
<Name>Description</Name>
<Val>Status Close</Val>
</String>
</Cluster>
<Cluster>
<Name>Tag</Name>
<NumElts>4</NumElts>
<EW><Name>Data Type</Name>
<Choice>Double</Choice>
</EW>
<String>
<Name>Name</Name>
<Val>91F2-PAE-I</Val>
</String>
<String>
<Name>Value</Name>
<Val>T</Val>
</String>
<String>
<Name>Description</Name>
<Val>Pulse active energy import</Val>
</String>
</Cluster>
<Cluster>
<Name>Tag</Name>
<NumElts>4</NumElts>
<EW><Name>Data Type</Name>
<Choice>Double</Choice>
</EW>
<String>
<Name>Name</Name>
<Val>91F2-PAE-E</Val>
</String>
<String>
<Name>Value</Name>
<Val>T</Val>
</String>
<String>
<Name>Description</Name>
<Val>Pulse active energy export</Val>
</String>
</Cluster>
</Array>
<Array>
<Name>Group Listings</Name>
<Dimsize>1</Dimsize>
<Cluster>
<Name>Tag Grouping</Name>
<NumElts>2</NumElts>
<String>
<Name>Group</Name>
<Val>Active energy</Val>
</String>
<Array>
<Name>Tag Names</Name>
<Dimsize>2</Dimsize>
<String>
<Name>Names</Name>
<Val>91F2-PAE-I</Val>
</String>
<String><Name>Names</Name>
<Val>91F2-PAE-E</Val>
</String>
</Array>
</Cluster>
</Array>
</Cluster>
</LVData>
答案 0 :(得分:0)
至于从LibreOffice Calc文档中读取数据,我对Ezodf有好运(https://pythonhosted.org/ezodf/)
偶尔导致令人困惑的doc的一个怪癖:曾经被称为Sheet的东西现在被称为Table(clasnames)。两者都是指工作表。
一些代码段:打开电子表格(FILE =“path / somefile.ods”)并迭代SHEETS指定的工作表的子集:
doc=ezodf.opendoc(FILE)
sheets = doc.sheets
sheetnames = list( sheets.names() )
for name in SHEETS:
print( "Starting sheet '{}'".format( name ))
do_sheet( sheets[name] )
def do_sheet( sheet ):
...
访问工作表中的单元格可以是"A1" or "AB352"
电子表格符号,也可以是(row,col)从零开始的整数2元组。所以“A4”和(3,0)是访问同一个单元格的方法。
单元格是一个包含两个组件的对象:value
和value_type
。典型代码类似于
cell = sheet[ (row,col) ]
t,v = cell.value_type, cell.value
if t is None:
# the cell is empty, convert to empty string
thing = ''
elif t == "string":
thing = v
elif t == "float":
# this is an all-digits product code which got stored as a number
thing = str( int( v))
你必须警惕那些与你期望的类型不同的用户数据:1O4
不是一百零四,它是一个三个字符的字符串,中间有一个字母O!
还有其他value_type
比无,“字符串”和“浮点数”。脑海中浮现出“约会”。有关他和ezodf对象的各种其他方法的更多详细信息,请参阅doc。