2016-12-07 1 views
-1

스프레드 시트 파일 (오픈 오피스)을 LabVIEW 클러스터에 해당하는 XML 형식으로 변환하고 XML 파일로 가져 오는 자동화 된 방법을 찾고 있습니다.Open Office (Calc) 스프레드 시트를 XML로 엽니 다.

스프레드 시트를 XML로 변환하는 데 파이썬을 사용하는 것이 좋지만 파이썬을 사용한 경험은 매우 제한적입니다. 나는 온라인에서 예제를 찾으려고 노력했지만, 대부분은 다른 방향보다는 스프레드 시트에 맞게 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

지금까지 LibreOffice와 캘크 문서의 출력 데이터를 읽는, 나는 Ezodf와 가끔 결과 (https://pythonhosted.org/ezodf/)

한 특질을 행운을했다대로 혼란스러운 의사 : 한때 시트라고 불렸던 것이 이제는 테이블 (clasnames)이라고 불립니다. 둘 다 워크 시트를 참조합니다.

일부 코드 조각

:

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): 
    ... 

가 될 수있는 워크 시트에서 셀 액세스 : SHEETS에 의해 지정의 워크 시트의 부분 집합을 통해 스프레드 시트 (FILE = "경로/somefile.ods")를 열기 및 반복 "A1" or "AB352" 스프레드 시트 표기법 또는 (행, 열) 0부터 시작하는 정수 2- 튜플로 시작됩니다. 따라서 "A4"와 (3,0)은 동일한 셀에 액세스하는 방법입니다.

세포는 valuevalue_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에있는 세 문자로 된 문자열입니다 중간!

없음, "string"및 "float"보다 value_type이 더 있습니다. "데이트"는 마음을 사로 잡습니다. ezodf 객체의 다양한 메소드에 대한 자세한 내용은 doc을 참조하십시오.

관련 문제