2015-07-21 36 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>