共用方式為


Office 方案的全球化與當地語系化

Microsoft Office 方案全球化與當地語系化的大部分層面,和使用 Visual Studio 建立其他種類的方案時所碰到的情況相同。 如需一般資訊,請參閱全球化和當地語系化應用程式。 如需全球化和當地語系化的資訊,請參閱 MSDN 網頁使用 Microsoft Visual Studio Tools for Microsoft Office system 所建立之方案的全球化和當地語系化問題

**適用於:**本主題中的資訊適用於 Microsoft Office 2010 和 2007 Microsoft Office system 的文件層級專案和應用程式層級專案。 如需詳細資訊,請參閱依 Office 應用程式和專案類型提供的功能

當地語系化文件文字

您專案中的文件、範本或活頁簿可能包含靜態文字,這些靜態文字必須與組件和其他 Managed 資源分開來進行當地語系化。 執行這項工作最簡便的方式,是製作一份文件的複本,並且使用 Microsoft Office Word 或 Microsoft Office Excel 翻譯文字。 即使您不變更程式碼這項程序也能運作,因為不論有幾份文件都可以連結到同一個組件。

不過您必須還是要確定,程式碼中與文件文字互動的任何部分仍然能夠與文字的語言相符,而且書籤、命名的範圍和其他顯示欄位能夠提供調整不同文法和文字長度所需的 Office 文件的任何重新格式化。 對於包含極少量文字的文件範本,您可以考慮將文字儲存在資源檔中,然後在執行階段載入文字。

文字方向

在 Excel 中,可以設定工作表的屬性,以從右向左呈現文字。 放置於設計工具上的主控制項、或任何擁有 RightToLeft 屬性的控制項,在執行階段會自動符合這些設定。 Word 不具有雙向文字的文件設定 (您只能變更文字的對齊),因此控制項無法對應到此設定。 反之,您必須為每一個控制項設定文字對齊方式。 但可以撰寫能處理所有控制項的程式碼,以強迫該控制項從右到左呈現文字。

變更文化特性

您的文件層級自訂程式碼通常會共用 Word 或 Excel 的 UI 主執行緒,因此對執行緒文化特性進行的任何變更都會影響正在該執行緒上執行的其他項目。此外,變更並不限於您的自訂。

Windows Form 控制項會在主應用程式啟動應用程式層級增益集之前初始化。 在這些情況中,應在設定 UI 控制項之前變更文化特性。

安裝語言套件

如果您有非英文的 Windows 設定,則可以安裝 Visual Studio Tools for Office Runtime 語言套件,以使用與 Windows 相同的語言查看 Visual Studio Tools for Office Runtime 訊息。 如果有任何使用者使用非英文的 Windows 設定執行方案,他們就必須擁有語言套件才能使用與 Windows 相同的語言查看執行階段訊息。Visual Studio Tools for Office Runtime 語言套件可從 Microsoft 下載中心下載。

此外,可轉散發的 .NET Framework 語言套件為 ClickOnce 訊息所必要。 .NET Framework 語言套件可從 Microsoft 下載中心下載。

地區設定和 Excel COM 呼叫

只要 Managed 用戶端呼叫 COM 物件上的方法,將需要傳入特定文化資訊,這是使用符合目前執行緒地區設定的 CurrentCulture (地區設定) 來達成。 根據預設,目前的執行緒地區設定是從使用者的地區設定繼承而來 不過,當您從使用 Visual Studio 中之 Office 開發工具所建立的 Excel 方案來呼叫 Excel 物件模型時,會自動將英文 (美國) 資料格式 (地區設定 ID 1033) 傳遞給 Excel 物件模型。 您必須先使用英文 (美國) 資料格式來設定含有區分地區設定格式之所有資料的格式 (例如,日期和貨幣),然後再將它傳遞給 Microsoft Office Excel 或從您的專案程式碼讀取資料。 如需詳細資訊,請參閱 使用各種地區設定,在 Excel 中格式化資料

儲存資料的考量事項

為了確保您的資料會正確解譯並顯示出來,您還應該考慮當應用程式將資料 (包括 Excel 工作表公式) 儲存在字串常值 (硬式編碼),而不是在強型別物件時可能發生的問題。 您應該使用假設不因文化特性而異或以英文 (美國) (LCID 值為 1033) 樣式設定格式的資料。

使用字串常值的應用程式

可能以硬式編碼的值包括:以英文 (美國) 格式撰寫的日期常值和包含當地語系化函式名稱的 Excel 工作表公式。 另一個可能性是包含數字的硬式編碼字串,例如 1,000 在有些文化特性中會解譯成 1000,但在其他文化特性中卻代表 1.0。 以錯誤的格式執行的計算和比較,可能會造成不正確的資料。

Excel 會依照隨字串傳遞的 LCID 來解譯任何字串。 如果字串格式未對應至傳遞的 LCID,則可能會發生問題。 使用 Visual Studio 中之 Office 開發工具所建立的 Excel 方案,會在傳遞所有資料時使用 LCID 1033 (en-US)。 Excel 會依照地區設定和 Excel 使用者介面語言來顯示資料。 Visual Basic for Applications (VBA) 也使用這種方式運作,字串會依照 en-US 設定格式,且 VBA 幾乎總是傳遞 0 (語言中性) 做為 LCID。 例如,下列的 VBA 程式碼會依照目前使用者的地區設定,來顯示 May 12, 2004 的正確格式值︰

'VBA
Application.ActiveCell.Value2 = "05/12/04"

在使用 Visual Studio 中之 Office 開發工具所建立的方案中使用相同的程式碼並透過 COM Interop 傳遞給 Excel 時,如果日期是以 en-US 樣式設定格式,則會產生相同的結果。

例如:

Me.Range("A1").Value2 = "05/12/04"
this.Range["A1", missing].Value2 = "05/12/04";

您應該盡可能使用強型別資料而不是字串常數。 例如,不使用字串常值儲存日期,而以 Double 來儲存,然後將其轉換為 DateTime 物件以供操作。

下列程式碼範例會取得使用者在 A5 儲存格輸入的日期,以 Double 儲存,然後將其轉換為 DateTime 物件,以便在 A7 儲存格中顯示。 A7 儲存格必須格式化為顯示日期。

Private Sub ConvertDate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles ConvertDate.Click

    Try
        Dim dbl As Double = Me.Range("A5").Value2
        Dim dt As System.DateTime = System.DateTime.FromOADate(dbl)
        Me.Range("A7").Value2 = dt

    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub
private void ConvertDate_Click(object sender, EventArgs e)
{
    try
    {
        double dbl = (double)(this.Range["A5", missing].Value2);
        System.DateTime dt = System.DateTime.FromOADate(dbl);
        this.Range["A7", missing].Value2 = dt;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

Excel 工作表函式

工作表函式名稱在大部分的 Excel 語言版本中會在內部轉譯。 不過,由於可能的語言和 COM Interop 問題,所以強烈建議您在程式碼中僅使用英文的函式名稱。

使用外部資料的應用程式

如果任何程式碼開啟或者以其他方式使用外部資料,如包含由舊版系統所匯出的逗號分隔值的檔案 (CSV 檔案),而這些檔案是使用 en-US 以外的格式匯出的,則也有可能受到影響。 資料庫的存取應該不會受到影響,因為所有的值應該具有二進位格式,除非資料庫將日期儲存為字串,或執行了不使用二進位格式的作業。 此外,如果使用來自 Excel 的資料建構 SQL 查詢,可能會需要確定它們是 en-US 格式,這視使用的函式而定。

請參閱

工作

HOW TO:以 Office 多語系使用者介面為目標

概念

使用各種地區設定,在 Excel 中格式化資料

Office 方案中的選擇性參數

其他資源

設計和建立 Office 方案