2013-07-16 2 views
0

Excel XML 스프레드 시트를 변형하여 다른 프로그램으로 가져와야합니다. 일반적인 XML 문서를 사용하면 문제가 없지만 Excel XML 문서는 또 다른 문제입니다. 문제가 발생하면 각 셀에서 필요한 데이터를 추출합니다.
데이터를 얻기 위해 나무를 가로 지르는 것을 허용하지 않는 몇 가지 주문이 있어야합니다.XSL을 사용하여 Excel XML 변환

다음
<xsl:template match="ss:Table"> 
<xsl:for-each select="ss:Row"> 
    <Reload> 
    <xsl:value-of select="ss:Cell/ss:Data"/> 
    </Reload> 
    <vio_sta-id> 
    <xsl:value-of select="ss:Cell/ss:Data"/> 
    </vio_sta-id> 
    <vio-first> 
    <xsl:value-of select="ss:Cell/ss:Data"/> 
    </vio-first> 
    <vio-middle> 
     <xsl:value-of select="ss:Cell/ss:Data"/> 
    </vio-middle> 
    <vio-last> 
     <xsl:value-of select="ss:Cell/ss:Data"/> 
    </vio-last> 

내가 수신하고있는 문서에서 "행"입니다 : 여기 처럼 내 스타일 시트의 일부 모습입니다.

<ss:Row> 
<ss:Cell><Data ss:Type="String">Reload</Data></ss:Cell> 
<ss:Cell><Data ss:Type="Number">21</Data></ss:Cell> 
<ss:Cell><Data ss:Type="String">ANTHONY</Data></ss:Cell> 
<ss:Cell><Data ss:Type="String"></Data></ss:Cell> 
<ss:Cell><Data ss:Type="String">VALDEZ</Data></ss:Cell> 
<ss:Cell><Data ss:Type="String">01/28/1982</Data></ss:Cell> 
<ss:Cell><Data ss:Type="String">07318386</Data></ss:Cell> 
<ss:Cell><Data ss:Type="String">000-00-0000</Data></ss:Cell> 
<ss:Cell><Data ss:Type="String">Blank Field</Data></ss:Cell> 
<ss:Cell><Data ss:Type="String">638 W BAETZ</Data></ss:Cell> 
<ss:Cell><Data ss:Type="String"></Data></ss:Cell> 
<ss:Cell><Data ss:Type="String">SAN ANTONIO</Data></ss:Cell> 
<ss:Cell><Data ss:Type="String">TX</Data></ss:Cell> 
<ss:Cell><Data ss:Type="String">78221</Data></ss:Cell> 
<ss:Cell><Data ss:Type="String">06/21/1999</Data></ss:Cell> 
<ss:Cell><Data ss:Type="String">3259</Data></ss:Cell> 
<ss:Cell><Data ss:Type="Number">165.00</Data></ss:Cell> 
<ss:Cell><Data ss:Type="Number">0.00</Data></ss:Cell> 
<ss:Cell><Data ss:Type="Number">0.00</Data></ss:Cell> 
<ss:Cell><Data ss:Type="String">8880</Data></ss:Cell> 
<ss:Cell><Data ss:Type="String">New</Data></ss:Cell> 
<ss:Cell><Data ss:Type="String">00/00/0000</Data></ss:Cell> 
<ss:Cell><Data ss:Type="String">PENDING</Data></ss:Cell> 
<ss:Cell><Data ss:Type="String">FRED NIETO JR.</Data></ss:Cell> 
<ss:Cell><Data ss:Type="String">ZIMMERMAN #700</Data></ss:Cell> 
<ss:Cell><Data ss:Type="String">EXP. 1-99::NEW::0</Data></ss:Cell> 
<ss:Cell><Data ss:Type="Number">10</Data></ss:Cell> 
<ss:Cell><Data ss:Type="Number">5</Data></ss:Cell> 

내 출력 반복 반복 첫번째 셀의 데이터 구성

.. 여하튼, I 판독 할 노드 집합 다음 단계로 진행하고 다음 ...

감사합니다.

+0

로 선택을 다시 작성하십시오. 실제 사용자의 개인 정보가 들어있는 것으로 보입니다. – harpo

+0

계속 진행하기 전에 네임 스페이스와 네임 스페이스 접두사에 대해 배우고 배우는 것이 좋습니다. –

답변

0

업데이트입니다. 내 첫 독서에서 마지막 진술을 놓쳤다.

  1. 당신은 행을 반복하는,하지만 세포 :

    귀하의 접근 방식은 두 가지 기본 문제가 있습니다.

  2. 특정 Data 요소를 선택하지 않았습니다.

템플릿이 다음과 같아야합니다

<xsl:for-each select="ss:Row"> 
     <Reload> 
      <xsl:value-of select="ss:Cell[1]/ss:Data"/> 
     </Reload> 
     <vio_sta-id> 
      <xsl:value-of select="ss:Cell[2]/ss:Data"/> 
     </vio_sta-id> 

    <!-- etc --> 

</xsl:for-each> 

(원래 대답을 여전히 도움이 이해하는 경우에이 떠난다.하십시오.) Data 요소는 접두사되지 않습니다

:

<ss:Cell><Data ss:Type="String">06/21/1999</Data></ss:Cell> 

선택자 앞에 접두어가 붙습니다 ss

<xsl:value-of select="ss:Cell/ss:Data"/> 

기본 네임 스페이스의 접두어가 ss 인 기본 URI가 아닌 경우에는 작동하지 않습니다.

난 당신이 샘플을 소독하는 것이 좋습니다

<xsl:value-of select="ss:Cell/Data"/> 
+0

그건 내가하고 싶은 일을하지 않고있어. 스타일 시트를 제공된 예제로 변경하면 – Sleepy

+0

목록이 표시되지 않습니다. 제안 된 스타일 시트로 바뀌면 다시로드 그리고 나서 텍스트가 모두 Jesse입니다. 나는 for-each 셀이 내가해야 할 일이라고 생각하지 않는다. 나는 행 요소를 읽고, 그 셀이 보유하고있는 그 데이터에 대해 각 셀을 읽으려고한다. – Sleepy

+0

좋아, 나는 당신의 예를 들고 XSL을 꺼냈다. : for-each for the cells 그리고 나서 셀에 대괄호를 사용합니다. Cell [1] 그리고 찾고있는 데이터를 제공합니다.나는 데이터 레벨로 들어가는 것이 인덱스 작성에 너무 깊은 것이라고 생각하지만 확실하게 XPATH 전문가가 아닙니다. – Sleepy

관련 문제