2009-11-11 2 views
0

늦은 바인딩을 사용하여 문자열을 Excel 2007에 문자열 (Cell.Value : = '2,5')으로 보내고 있습니다. 실제 코드는 더 같다 : 내 엑셀 97 버전에델파이 2010에서 Excel 2007로 숫자를 보내는 것을 도와주세요

var CellVal: OLEVariant; 
... 
CellVal := FloatToStr(2.5); // Regionally formatted. 
Cell.Value := CellVal; 

는,이 값은 기본적으로 "일반"으로 포맷 할 형식과 숫자로 볼 수 있습니다. Excel 2007을 사용하는 고객이 "표준"형식의 셀로 끝나고 Excel에서 문자열이 표시됩니다 (오른쪽 정렬되지 않음). 국가 별 설정을 사용하여 숫자의 서식을 지정하고 Excel이 사용중인 것으로 나타납니다. 기본 지역 설정뿐입니다.

고객이 셀에 2,5을 입력하면 셀을 숫자로 받아 들여서 클립 보드에서 '2,5'문자열을 셀로 복사하면 숫자로도 인식됩니다. 아무도 왜 Excel에서 자동화 인터페이스가 아닌 숫자로 끝나는 문자열 값을 보냈습니까?

의견을 보내 주셔서 감사합니다. 고객에 대한 지역 소수점 구분 기호를 지정하기 위해 편집하면 ','입니다.

답변

3

당신이 의견을 포맷 할 수 없습니다 때문에 :

난 그냥 약간의 테스트를했고, Excel에서 문자열로 지역 포맷 부동 소수점 값을 원하지 않는다, 단지 소수 구분 기호로 점을 원한다.

procedure TForm1.Button1Click(Sender: TObject); 
var 
    App: Variant; 
    Workbook: Variant; 
    Worksheet: Variant; 
    DoubleValue: Double; 
begin 
    App := CreateOleObject('Excel.Application'); 
    Workbook := App.Workbooks.Add; 
    Worksheet := Workbook.ActiveSheet; 
    DoubleValue := 1.2; 
    Worksheet.Range['A1'].Value := DoubleValue; //DoubleValue is a double, excel recognizes a double 
    Worksheet.Range['A2'].Value := '1.2'; //excel recognizes a double 
    Worksheet.Range['A3'].Value := '1,2'; //excel recognizes a string 
    Worksheet.Range['A4'].Value := FloatToStr(1.2); //excel recognizes a string 
    App.Visible := True; 
end; 

소수점 구분 기호로 쉼표를 사용합니다.

+0

확인해 주셔서 감사합니다. 어떤 버전의 Excel을 사용하고 있습니까? 내 Excel 97 올바르게 지역 문자열을 처리합니다. 이 동작이 Excel 2007의 새로운 기능인지 궁금합니다. – MarkF

+0

Excel 2007을 사용하고 있습니다. –

+1

Office 자동화에서는 미국 설정을 사용하여 값을 전달해야하며 Excel에서 해당 값을 지역화해야합니다. Outlook을 사용하여 광범위한 자동화 작업을 수행하고 미국 날짜 형식으로 날짜를 전달해야합니다. 그러면 날짜 형식이 Outlook/Exchange의 지역 설정으로 올바르게 현지화됩니다. –

0

동작이 다른 이유를 설명 할 수는 없지만 Excel 2007이 들어오는 값을 해석하는 방법에 따라 달라질 수 있습니다.

코드에서 셀의 형식을 설정하는 방법은 어떻습니까?

Worksheets("Sheet1").Range("A17").NumberFormat = "General" 
+0

감사합니다. 여기 Excel 2007이 없지만 "표준"이 새로운 "일반"이라고 생각합니다. 나는 그것에 대해 잘못 될 수 있습니다! Excel 2007을 가진 사람이라면 누구나 그 의견에 댓글을 달 수 있습니까? – MarkF

+0

사실, 표준은 새로운 일반입니다 –

3

아마도 문자열을 지정했기 때문일 수 있습니다. float 값을 직접 전달하려고 시도 했습니까?

+0

그 트릭을해야합니다. Excel 2007에서는 값 유형에 따라 형식이 결정될 수 있습니다. –

+0

예, float 값을 전달하면 작동합니다. 그러나 난 정말 문자열을 사용하여 작동하지 않는 이유를 찾으려고 노력하고있어. 문자열로 전달하는 것을 선호하는 상황이 있습니다. – MarkF

관련 문제