|
김태진 님이 쓰신 글 :
: 엑셀 파일의 내용을 읽어오기에 대해서 검색하는 중에..
: 또 궁금해서요..;;
:
: 엑셀의 셀 안에 있는 값이 정수인지 스트링인지를 체크할수가 있을까요?
:
: 예를 들어서 모든 셀을 읽어 와서..(아직 못찾았지만..;)
: 숫자 값이면 메모창에 출력
: 빈값이나 텍스트값이면 버림
: 으로 처리하고 싶습니다.
:
: 방법 좀 알려주시기 바랍니다..ㅠ_ㅠ
:
:
: 김태진 님이 쓰신 글 :
: : 안녕하세요..
: : 엑셀 파일을 읽어서
: : 약간의 수정을 가한 후 텍스트 파일로 만들려고 합니다.
: :
: : 우선 엑셀 파일을 셀 단위가 아닌 줄 단위로 읽어 올수 있는지 알고 싶습니다.
: : 줄 단위면.. 레코드..인가요?
: :
: : 그리고 데이터가 무지 큰 경우 ExcelApplication을 사용하면 무지 느리다고 하는데..
: :
: : 그냥 텍스트 형식으로 열수 있는지도 알고 싶습니다.
: :
: : 그리고 데이터가 1000줄 정도면..
: : 그냥 for 돌려서 cell을 읽어 들여서 처리할수 있는지..도
: : 알고 싶습니다..
: :
: : 엑셀 오토메이션에 대해 잘 아시는분 있으시면
: : 답변 좀 부탁드립니다!
1. Variant에는 Type 메서드가 있으므로 이를 사용할 수도 있고
2. Excel Application에는 WorksheetFunction 개체가 있는데 이 개체의 IsNumber 또는 IsText 메서드를 사용할 수도 있습니다.
Variant xlApp,xlBook,xlSheet,xlSheetFunction,value;
String msg;
int col,row,type;
try{
xlApp = Variant::CreateObject("Excel.Application");
xlApp.OlePropertySet("DisplayAlerts", false);
xlApp.OlePropertySet("Visible", false);
xlBook = xlApp.OlePropertyGet("Workbooks").OleFunction("Open","Book1.xls");
xlSheet = xlBook.OlePropertyGet("Worksheets").OlePropertyGet("Item",1);
xlSheetFunction = xlApp.OlePropertyGet("WorksheetFunction");
for(col=1 ;col<3 ;col++){
for(row=1 ;row<5 ;row++){
value=xlSheet.OlePropertyGet("Cells",row,col).OlePropertyGet("Value");
type=xlSheetFunction.OleFunction("IsNumber",xlSheet.OlePropertyGet("Cells",row,col));
msg.printf("%c%d : value=%s \t type=%s(%d)"
,'A'+col-1
,row
,(AnsiString)value
,(type?"Number":(xlSheetFunction.OleFunction("IsText",xlSheet.OlePropertyGet("Cells",row,col))?"Text":"Else"))
,value.Type()
);
Memo1->Lines->Add(msg);
}
}
xlBook.OleFunction("Close");
}__finally{
try{
xlApp.OleFunction("Quit");
}catch(...){
}
xlApp = Unassigned;
xlBook = Unassigned;
xlSheet = Unassigned;
xlSheetFunction = Unassigned;
value = Unassigned;
}//try
|