2015-07-21 37 views
0

爲了動態獲取excel文件中的物理圖像路徑,我必須使用下面的代碼。使excel理解編碼的xml格式

=LEFT(CELL("filename",A1),FIND("*",SUBSTITUTE(CELL("filename",A1),"\","*",LEN(CELL("filename",A1))-LEN(SUBSTITUTE(CELL("filename",A1),"\",""))),1))&"D04523.jpg" 

但正如我的Excel文件是基於XML的格式urn:schemas-microsoft-com:office:spreadsheet,我必須每"雙引號編碼像下面。

=LEFT(CELL("filename",A1),FIND("*",SUBSTITUTE(CELL("filename",A1),"\","*",LEN(CELL("filename",A1))-LEN(SUBSTITUTE(CELL("filename",A1),"\",""))),1))&"D04523.jpg" 

一切都在XML文件是正確的,但問題是excel文件不能解碼"

下面是我可以在Excel應用程序中打開的XML文件。

<?xml version="1.0" encoding="utf-8"?> 
<?mso-application progid="Excel.Sheet"?> 
<ss:Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"> 
    <ss:Worksheet ss:Name="Sheet1"> 
    <ss:Table> 
     <ss:Row> 

     <ss:Cell> 
      <ss:Data ss:Type="String">1</ss:Data> 
     </ss:Cell> 
     <ss:Cell> 
      <ss:Data ss:Type="String">2</ss:Data> 
     </ss:Cell> 

     </ss:Row> 
     <ss:Row>   

     <!-- Error happen : An unexpected error has occured. --> 
     <ss:Cell     
     ss:HRef="=LEFT(CELL(&quot;filename&quot;,A1),FIND(&quot;*&quot;,SUBSTITUTE(CELL(&quot;filename&quot;,A1),&quot;\&quot;,&quot;*&quot;,LEN(CELL(&quot;filename&quot;,A1))-LEN(SUBSTITUTE(CELL(&quot;filename&quot;,A1),&quot;\&quot;,&quot;&quot;))),1))&amp;&quot;D04523.jpg&quot;"> 
      <ss:Data ss:Type="String">View Image 1</ss:Data> 
     </ss:Cell> 

     <!-- This can view image when user click. But I don't want to use hard coded path.--> 
     <ss:Cell     
     ss:HRef="D:\05.Project\ExcelResearch\D04523.jpg"> 
      <ss:Data ss:Type="String">View Image 2</ss:Data> 
     </ss:Cell> 

     </ss:Row> 
    </ss:Table> 
    </ss:Worksheet> 
</ss:Workbook> 

所以我的問題

我怎樣才能讓Excel來理解編碼的公式?

如何修改xml文件以轉義雙引號"
我嘗試使用斜槓,但不起作用。

+0

是否有可能在你的喜好爲Excel編碼沒有被設置爲「UTF-8" ? – AMR

回答

0

您不應該使用ss:Formula而不是ss:Href

這是我保存工作簿您發佈的公式後得到:

<Cell ss:Index="2" 
ss:Formula="=LEFT(CELL(&quot;filename&quot;,RC[-1]),FIND(&quot;*&quot;,SUBSTITUTE(CELL(&quot;filename&quot;,RC[-1]),&quot;\&quot;,&quot;*&quot;,LEN(CELL(&quot;filename&quot;,RC[-1]))-LEN(SUBSTITUTE(CELL(&quot;filename&quot;,RC[-1]),&quot;\&quot;,&quot;&quot;))),1))&amp;&quot;D04523.jpg&quot;"> 
<Data ss:Type="Error">#VALUE!</Data> 
</Cell>