2015-11-04 37 views
1

我有一個小問題 - 我必須列出幾個大型共享項目的所有標籤,因此標識缺少翻譯的標識會更新。從項目中將標籤導出到Excel

現在我正在尋找的東西就像Palle Agermark的標籤導出作業(http://www.agermark.com/2011/10/export-and-import-labels-for.html),但是它會經過一個或多個項目並將所有標籤ID(無論標籤系列)和三種語言的值拉到Excel中。

可以這樣做,任何指針? :)

+0

你在大型共享項目中的含義是什麼?你是指在項目內部的任何元素屬性上使用的所有標籤,以及在該項目中使用標籤的代碼中的任何位置?或者是否存在您感興趣的項目內部的實際標籤文件?你知道你可以右鍵點擊並導出標籤文件,它只是純文本嗎?你是否試圖用代碼來解決這個問題,或者你真的只想找到缺失的翻譯,或者自己有這麼多的標籤文件?如果缺少翻譯,您可以打開並進行抽查。 –

+0

「你是指在項目內部的任何元素屬性上使用的所有標籤,以及在該項目的側面使用標籤的代碼中的任何地方?」 這個。這些項目有幾十個,或超過一百個不同的對象。手工完成所有工作並將其複製到Excel中將耗費大量時間和精力。這不是爲了好玩,而是在這個詞的任何含義:) –

+0

我不知道你是否可以將項目導出到xpo文件,並簡單地_grep_相關數據從他們。 –

回答

4

這擴展了Jan B. Kjeldsen的最後評論的想法,以從項目xpo文件中獲取標籤。標籤被保存在XPO文件在以下XML結構:

<Table:Record name="TmpSysLabel" xmlns:Table='urn:www.microsoft.com/Formats/Table'> 
    <Table:Field name="Language">de</Table:Field> 
    <Table:Field name="Label">Geplante Produktionsaufträge</Table:Field> 
    <Table:Field name="Description"></Table:Field> 
    <Table:Field name="LabelId">@SYS119128</Table:Field> 
    <Table:Field name="SysLabelApplModule">0</Table:Field> 
    <Table:Field name="recVersion">0</Table:Field> 
    <Table:Field name="Partition">5637144576</Table:Field> 
</Table:Record> 

我的第一個想法是導入該XML到Excel,但Excel不會在屬性列名發揮好。所以不是我寫的是把XML到類似下面的一個xsl:

<?xml version="1.0" encoding="UTF-8"?> 
<labels> 
    <record> 
     <Language>de</Language> 
     <Label>Geplante Produktionsaufträge</Label> 
     <Description /> 
     <LabelId>@SYS119128</LabelId> 
     <SysLabelApplModule>0</SysLabelApplModule> 
     <recVersion>0</recVersion> 
     <Partition>5637144576</Partition> 
    </record> 
</labels> 

爲此改造,原來的XML必須被清理了一下,替換recordTable:Record所有出現的所有出現Table:Fieldfield。還要添加一個根XML節點labels。它應該看起來像

<labels> 
    <record> 
     <field name="Language">de</field> 
     <field name="Label">Geplante Produktionsaufträge</field> 
     <field name="Description"></field> 
     <field name="LabelId">@SYS119128</field> 
     <field name="SysLabelApplModule">0</field> 
     <field name="recVersion">0</field> 
     <field name="Partition">5637144576</field> 
    </record> 
</labels> 

現在最有趣的部分(至少對我來說,因爲我沒有多少之前XSL語法知識),XSL轉換文件。我結束了以下,這將產生使用http://www.freeformatter.com/xsl-transformer.html想要的XML:

<?xml version="1.0" encoding="utf-16"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" omit-xml-declaration="yes" indent="no" /> 
<xsl:template match="/"> 
    <labels> 
    <xsl:for-each select="Labels/*"> 
     <record> 
     <xsl:for-each select="*"> 
      <xsl:element name="{@name}"> 
       <xsl:value-of select="." /> 
      </xsl:element> 
     </xsl:for-each> 
     </record> 
    </xsl:for-each> 
    </labels> 
</xsl:template> 
</xsl:stylesheet> 

生成的XML,然後可以使用Excel的開發工具XML導入到Excel中。結果看起來像XML Labels in Excel

+0

不錯!謝謝,我認爲這會做到這一點:) –

2

最簡單的解決方案是直接轉到標籤源。

2009年AX中的標籤存儲在應用程序文件夾名稱類似於像axSYSen-us.ald包括以下部分:

  1. 斧 - 文件前綴
  2. SYS - 標籤名稱,@ SYS123標籤存儲有
  3. EN-US - 的語言說明
  4. ALD - 標籤文件擴展

的文件是文本格式,可以輕鬆導入到Excel或使用文本編輯器進行編輯。

您可以導入到Excel,每個標籤文件一張,然後使用Excel公式將輸出合併到單獨的工作表(在同一工作簿中)。

在AX 2012中,標籤存儲在模型數據庫中,.ald文件在啓動時創建。

+0

是的,但這不會給我只是在某些項目中使用的標籤。 –

+2

然後導出項目並使用XPO文件中的輸出。在使用前需要對輸入進行更多的清理,但XPO的標籤部分採用XML格式;它應該很容易轉換爲製表符分隔或類似的格式。 –

+1

另外,您可以使用SysLabel API訪問標籤:https://msdn.microsoft.com/en-us/library/gg952024.aspx。再次掃描XPO輸出將是每個項目標籤列表的最快方式。 –