Excel 솔루션 전역화 및 지역화
이 단원에는 영어 이외의 Windows가 설치된 컴퓨터에서 실행되는 Microsoft Office Excel 솔루션에 대해 특별히 고려해야 할 사항을 설명합니다.Microsoft Office 솔루션의 전역화 및 지역화는 대부분의 측면에서 Visual Studio를 사용하여 다른 종류의 솔루션을 만드는 작업과 동일합니다.일반적인 내용은 응용 프로그램 전역화 및 지역화를 참조하십시오.전역화 및 지역화 정보는 MSDN 웹 페이지 Globalization and Localization Issues for Solutions Created with Microsoft Visual Studio Tools for the Microsoft Office System에서도 제공합니다.
기본적으로 Microsoft Office Excel의 호스트 컨트롤은 관리 코드를 사용하여 전달 또는 조작되는 모든 데이터의 서식이 영어(미국)로 지정된 경우 모든 Windows 국가별 설정에서 올바르게 작동합니다.대상으로 하는 프로젝트의 .NET Framework 4 또는 .NET Framework 4.5, 공용 언어 런타임 (CLR)이이 동작을 제어 합니다.
적용 대상: 이 항목의 정보는 Excel 2013 및 Excel 2010의 문서 수준 프로젝트 및 응용 프로그램 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.
여러 가지 국가별 설정으로 Excel의 데이터 서식 지정
날짜와 통화 같이 로캘에 따라 다른 서식을 사용하는 모든 데이터는 영어(미국) 데이터 형식(로캘 ID 1033)을 사용하여 서식을 지정해야 해당 데이터를 Microsoft Office Excel로 전달하거나 Office 프로젝트의 코드에서 읽을 수 있습니다.
기본적으로 Visual Studio에서 Office 솔루션을 개발할 때 Excel 개체 모델은 로캘 ID 1033 데이터 형식을 예상합니다. 이를 가리켜 개체 모델을 로캘 ID 1033으로 잠근다고도 합니다.이 동작은 Visual Basic for Applications가 작동하는 방법과 일치합니다.그러나 Office 솔루션에서 이 동작을 수정할 수 있습니다.
항상 로캘 ID 1033을 예상하는 Excel 개체 모델의 방식 이해
기본적으로 Visual Studio를 사용하여 만드는 Office 솔루션은 최종 사용자의 로캘 설정에 의해 영향을 받지 않으며 항상 로캘이 영어(미국)인 것처럼 동작합니다.예를 들어 Excel에서 Value2 속성을 가져오거나 설정할 경우 해당 데이터는 로캘 ID 1033이 예상하는 서식으로 지정되어 있어야 합니다.다른 데이터 형식을 사용하는 경우 예기치 않은 결과가 발생할 수 있습니다.
관리 코드에 의해 전달되거나 조작되는 데이터에 영어(미국) 형식을 사용하더라도 Excel에서는 최종 사용자의 로캘 설정에 따라 정확하게 데이터를 해석하고 표시합니다.관리 코드가 로캘 ID 1033을 데이터와 함께 전달함으로써 데이터가 영어(미국) 형식으로 되어 있으며 사용자의 로캘 설정에 일치하도록 서식이 다시 지정되어야 함을 나타내기 때문에 Excel에서는 데이터 서식을 올바르게 지정할 수 있습니다.
예를 들어, 국가별 옵션을 독일어(독일) 로캘로 설정한 최종 사용자는 2005년 6월 29일이 29.06.2005 형식이 될 것으로 예상합니다.그러나 솔루션에서 날짜를 문자열로 Excel에 전달하는 경우 영어(미국) 형식에 따라 날짜 서식을 6/29/2005로 지정해야 합니다.셀 서식이 날짜인 경우 Excel에서는 독일어(독일) 형식으로 날짜를 표시합니다.
Excel 개체 모델에 다른 로캘 ID 전달
공용 언어 런타임 (CLR) 모든 메서드 및 로캘 구분 데이터를 받아들이는 Excel 개체 모델 속성에 로캘 ID 1033을 자동으로 전달 합니다.개체 모델에 대한 모든 호출에 대해 이 동작을 자동으로 변경할 수는 없습니다.그러나 InvokeMember를 통해 메서드를 호출하고 로캘 ID를 메서드의 culture 매개 변수에 전달하여 특정 메서드에 다른 로캘 ID를 전달할 수 있습니다.
문서 텍스트 지역화
프로젝트의 문서, 템플릿 또는 통합 문서에 따라서는 어셈블리 및 기타 관리되는 리소스와는 별도로 지역화해야 할 정적 텍스트가 포함될 수 있습니다.이를 수행하기 위한 간단한 방법은 문서의 복사본을 만들고 Microsoft Office Word나 Microsoft Office Excel을 사용하여 텍스트를 번역하는 것입니다.여러 문서가 동일한 어셈블리에 연결되어 있을 수 있으므로 이 방법은 코드를 변경하지 않고도 수행할 수 있습니다.
그러나 이 경우에도 문서 텍스트와 상호 작용하는 코드의 각 부분이 텍스트의 언어에 계속하여 일치하는지 여부를 확인하고 각기 다른 문법과 텍스트 길이에 맞춰 조정해야 하는 Office 문서의 서식을 다시 적용하기에 책갈피, 명명된 범위 및 기타 표시 필드의 공간이 충분한지 여부를 확인해야 합니다.비교적 적은 양의 텍스트가 들어 있는 문서 템플릿의 경우 텍스트를 리소스 파일에 저장한 다음 런타임에 텍스트를 로드할 수도 있습니다.
텍스트 방향
Excel에서는 텍스트를 오른쪽에서 왼쪽으로 렌더링하도록 워크시트의 속성을 설정할 수 있습니다.호스트 컨트롤이나 RightToLeft 속성이 있는 모든 컨트롤을 디자이너에 배치하면 이러한 설정이 런타임에 자동으로 맞춰집니다.Word에는 양방향 텍스트에 대한 문서 설정이 없으며 텍스트 맞춤만 변경할 수 있으므로 컨트롤을 이 설정에 매핑할 수 없습니다.대신 각 컨트롤에 대해 텍스트 할당을 설정해야 합니다.모든 컨트롤에 적용하여 텍스트를 오른쪽에서 왼쪽으로 렌더링하는 코드를 작성할 수 있습니다.
문화권 변경
문서 수준 사용자 지정 코드는 일반적으로 Excel의 주 UI 스레드와 공유 스레드 문화권에 대 한 변경에 영향을 하므로 해당 스레드에서 실행 되는 모든 것. 변경이 사용자 지정으로 제한 되지 않습니다.
Windows Forms 컨트롤은 호스트 응용 프로그램에서 응용 프로그램 수준 추가 기능을 시작하기 전에 초기화됩니다.이 경우 UI 컨트롤을 설정하기 전에 문화권을 변경해야 합니다.
언어 팩 설치
Windows의 설정이 영어가 아닌 경우 Microsoft Visual Studio Tools for Office Runtime 언어 팩을 설치하여 Windows와 동일한 언어로 Microsoft Visual Studio Tools for Office Runtime 메시지를 볼 수 있습니다.최종 사용자가 Windows의 설정이 영어가 아닌 솔루션을 실행 하는 경우 Windows와 동일한 언어로 런타임 메시지를에서 보려면 올바른 언어 팩이 있어야 합니다. Microsoft Visual Studio Tools for Office Runtime 언어 팩에서 사용할 수 있는 Microsoft 다운로드 센터.
또한 ClickOnce 메시지에는 재배포 가능 .NET Framework 언어 팩이 필요합니다..NET Framework 언어 팩은 Microsoft 다운로드 센터에서 다운로드할 수 있습니다.
지역 설정 및 Excel COM 호출
관리되는 클라이언트에서 COM 개체를 호출하고 문화권별 정보를 전달해야 할 때마다 현재 스레드 로캘에 일치하는 CurrentCulture(로캘)가 사용됩니다.현재 스레드 로캘은 기본적으로 사용자의 국가별 설정에서 상속됩니다.그러나 Visual Studio에서 Office 개발 도구를 사용하여 만든 Excel 솔루션에서 Excel 개체 모델에 대한 호출을 수행하면 영어(미국) 데이터 형식(로캘 ID 1033)이 Excel 개체 모델에 자동으로 전달됩니다.날짜와 통화 같이 로캘에 따라 다른 서식을 사용하는 모든 데이터는 영어(미국) 데이터 형식을 사용하여 서식을 지정해야 해당 데이터를 Microsoft Office Excel로 전달하거나 프로젝트 코드에서 읽을 수 있습니다.
데이터 저장을 위한 고려 사항
데이터가 올바르게 해석 및 표시, 응용 프로그램에서 문자열 리터럴을 Excel 워크시트 수식과 같은 데이터를 저장할 경우이 문제가 발생할 수도 고려해 야 합니다 (대신 강력한 형식의 개체를 코드화).고정 문화권 또는 영어(미국)(LCID 값 1033) 스타일을 사용하여 서식이 지정된 데이터를 사용해야 합니다.
문자열 리터럴을 사용하는 응용 프로그램
하드 코드되었을 수 있는 가능한 값에는 영어(미국) 형식에서 작성된 날짜 리터럴과 지역화된 함수 이름을 포함하고 있는 Excel 워크시트 수식이 포함됩니다.다른 가능한 값은 "1,000"과 같은 숫자가 포함되어 있는 하드 코드된 문자열입니다. 일부 문화권에서 이 값은 1000으로 해석될 수 있지만 다른 문화권에서는 1.0으로 해석될 수도 있습니다.잘못된 형식으로 수행된 계산 및 비교는 잘못된 데이터 결과를 초래합니다.
Excel에서는 문자열과 함께 전달된 LCID에 따라 모든 문자열을 해석합니다.이는 문자열 형식이 전달된 LCID와 일치하지 않는 경우에 문제가 됩니다.Visual Studio에서 Office 개발 도구를 사용하여 만든 Excel 솔루션은 모든 데이터를 전달할 때 LCID 1033(en-US)을 사용합니다.Excel에서는 국가별 설정과 Excel 사용자 인터페이스 언어에 따라 데이터를 표시합니다.VBA(Visual Basic for Applications)는 문자열의 서식을 en-US로 지정하고 VBA에서 LCID로 거의 항상 언어 중립적인 0을 전달하는 방식으로도 작동합니다.예를 들어 다음 VBA 코드에서는 현재 사용자 로캘 설정에 따라 2004년 5월 12일에 해당하는 값을 올바르게 형식 지정하여 표시합니다.
'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"].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"].Value2);
System.DateTime dt = System.DateTime.FromOADate(dbl);
this.Range["A7"].Value2 = dt;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Excel 워크시트 함수
워크시트 함수 이름은 Excel의 거의 모든 언어 버전에서 내부적으로 번역됩니다.그러나 언어 및 COM interop 문제가 발생할 가능성을 완전히 배제할 수 없으므로 코드에는 영어 함수 이름만 사용하는 것이 좋습니다.
외부 데이터를 사용하는 응용 프로그램
레거시 시스템에서 en-US 이외의 형식을 사용하여 내보내기된 쉼표로 구분된 값(CSV 파일)을 포함하는 파일과 같은 외부 데이터를 열거나 사용하는 모든 코드도 영향을 받을 수 있습니다.데이터베이스가 날짜를 문자열로 저장하거나 이진 형식을 사용하지 않는 작업을 수행하는 경우를 제외하고 모든 값은 이진 형식이어야 하므로 데이터베이스 액세스는 영향을 받지 않을 수 있습니다.또한 Excel의 데이터를 사용하여 SQL 쿼리를 작성하는 경우 어떠한 함수를 사용하는지에 따라 쿼리가 en-US 형식인지 확인해야 할 수도 있습니다.
참고 항목
작업
방법: Office 다국어 사용자 인터페이스 대상 선택