2012-08-17 4 views
5

CxDBGrid에서 Excel 파일로 데이터를 내보내고 있습니다. 파일을 만들고 데이터를 복사 할 수 있지만 열 서식에 심각한 문제가 있습니다. DB에서 데이터를 가져 오는 중이므로 스프레드 시트에 NUMBER, VARCHAR2, DATE 등의 유형을 반영하고 싶습니다. 나는 시각적으로 매크로를 만들어 은 VBA 코드를 찾아 갔다, 그리고 델파이 프로젝트에 복제 :Excel 열 유형 및 서식을 어떻게 설정합니까?

sheet.Columns[K+2].NumberFormat := '0,000'; //Number 
sheet.Columns[K+2].NumberFormat := '@'; //Text 
sheet.Columns[K+2].NumberFormat := 'm/d/yyyy'; //Date 

번호 서식 작품 확인 시간의 대부분을하지만, 다른 두 사람은하지 않습니다. 생성 된 파일을 열면 텍스트 열이 "사용자 지정"유형으로 표시되고 모든 셀에 "-64"가 표시됩니다. 셀을 편집하려면 올바른 값이 실제로 있어야합니다. 날짜가 다른 문제입니다. DB의 형식은 dd/mm/yyyy이고, 그대로 Excel에 공급하면 모두 엉망이됩니다. 올바른 형식을 설정하려고했지만 Excel에서 인식하지 못합니다.

실마리가 있습니까?

또한 열 너비를 설정하고 있습니다. 그건 완벽하게 작동합니다.

+0

개발자 익스프레스 구성 요소를 말하는 cxDbGrid라고 할 때를 가정합니다. 그렇다면 Developer Express에서 제공하는 ExportGridToExcel() 프로 시저를 사용하여 Excel로 내보내고 있습니까? –

+0

나는 그것을 시도했지만 데이터 타입을 설정하는데 문제가있다. 그래서 수동으로 작업하고 싶습니다. – asg2012

+0

ExportGridToExcel()을 사용하여 데이터 유형이나 내보내기와 관련하여 아무런 문제없이 여러 위치를 사용할 수 있습니다. 귀하의 코드를 보지 않으면 그것이 왜 당신을 위해 작동하지 않았는지 알아 내기가 어렵습니다. 자신의 내보내기를 작성하는 데 어려움을 겪지 않고, Developer Express 지원 사이트에서 도움을 요청할 수 있습니다. 그들의 지원은 훌륭하며 일반적으로 솔루션을 사용하여 당신을 아주 빨리 도울 수 있습니다. –

답변

3

"어떻게 수동으로 작업하고 있습니까?"라고 말하지 않은 이유는 사람들이 자신이하는 일을 완전히 추측해야한다는 것을 의미합니다. 나는이 구성 요소와 estensive 경험이 당신이 개발자 익스프레스 에서 익스프레스 스프레드 시트 구성 요소를 사용하는 가정하면

  1. : 그래서 여기 내 추측이다. 임의의 숫자 형식을 지원하지 않습니다. 정확하게 두 자리의 "돈"형식 (0.00)을 지원합니다. 세 개 또는 한 개 또는 기타 소수 자릿수를 지원하지 않습니다. 그렇다면 Express 스프레드 시트의 알려진 설계상의 문제점입니다.

  2. 수동으로 위의 "시트"가 OLE 개체이고 OLE 자동화를 통해 Excel 자체와 통신한다는 것을 의미하는 경우 개별적으로 또는 범위가 아닌 열로 서식을 지정해야합니다. 사물. 어떻게하면 열 개체 형식이 셀 값을 재정의하는지 확실하지 않습니다. 세포의 형식은 일반적으로 세포 물질에 의한 세포이며, 그렇게 취급되어야합니다.

  3. 제대로 작동하려면 OLE 자동화를 통해 Excel을 사용하지 말고 적절한 Excel XLS 형식 가능 라이브러리를 작성하십시오. CX (DevEx) db 그리드에서 적절한 결과를 얻을 수 있다고 확신했지만, 여기서는 아니지만 포럼에서 물어볼 것입니다. 정기적 인 DB Grid를 사용하면 Jedi JVCL에 들어있는 TJvDBGridExcelExport을 사용하고 일반 VCL DB Grid와 함께 사용할 수 있습니다.

4

문제는 할당 된 값이 유니 코드 문자열이라는 점입니다. 이것을 시도하십시오 :

sheet.Columns[K+2].NumberFormat := AnsiChar('@'); 
sheet.Columns[K+2].NumberFormat := AnsiString('m/d/yyyy'); 
관련 문제