|
슬님.. 답변 정말로 감사드립니다.
엑셀이 실행되는게 보이질 않고 저장이 되네요.
그런데, 아래 부분에서 에러가 나구요..
: ExcelWb->SaveAs(m_strFileName,
: TNoParam(),
: TNoParam(),
: TNoParam(),
: TNoParam(),
: TNoParam(),
: (Excel_xp::XlSaveAsAccessMode) 3/*[in,def,opt]*/,
: TNoParam(),
: TNoParam(),
: TNoParam(),
: TNoParam(),
: TNoParam(),
: TDefLCID());
그리고 솔직히 제가 너무 초보에 허접이라, 다이얼로그를 어떻게 띄우는지도 모릅니다. ㅠ.ㅜ
포럼에 자료가 많다고 하는데, 검색 능력도 떨어지는지 잘 못 찾겠네요. ㅡㅡ;;;
염치없지만, 조금 자세히 알려주시면 안될까요? 소스코드로....
버튼을 누르면, FileSaveAs 다이얼로그가 뜹니다.
거기에 원하는 파일 이름을 쓰고 (ex. 20060525.xls) 원하는 디렉토리를 선택한 후 저장을 누릅니다.
그럼 xls 파일이 생기고, xls 파일을 열면, edit의 내용이 이~쁘게 excel cell 에 담겨 나오는거죠..
꼭 좀 도와주세요~ ㅠ.ㅜ
소스 코드를 알려달라고 하는게 참 챙피하고 슬님께 죄송하지만, 지금 상황으로서는 그 방법 밖에 없는지라.. ㅠ.ㅜ
부탁 드리겠습니다..
슬 님이 쓰신 글 :
: 허접 님이 쓰신 글 :
: : void __fastcall TFormMain::Button1Click(TObject *Sender)
: : {
: : WideString strTitle = "Excel Test";
: : WideString strFile = "C:\\test.xls";
: : WideString FileName;
: :
: : ExcelApplication1->Connect();
: : // true 화면에 보임, false 화면에 보이지 않음
: : ExcelApplication1->set_Visible(0,true);
: : ExcelWorkbook1->ConnectTo(ExcelApplication1->Workbooks->Add());
: : //첫번째 워크시트와 연결
: : ExcelWorksheet1->ConnectTo(ExcelApplication1->Worksheets->get_Item((TVariant)1));
: : //워크시트의 이름
: :
: : ExcelWorksheet1->set_Name(strTitle);
: :
: : ExcelWorksheet1->Cells->set_Item((TVariant)1,(TVariant)"A",(TVariant)Edit20->Text) ;
: : ExcelWorksheet1->Cells->set_Item((TVariant)1,(TVariant)"B",(TVariant)Edit30->Text) ;
: : ExcelWorksheet1->Cells->set_Item((TVariant)1,(TVariant)"C",(TVariant)Edit40->Text) ;
: : ExcelWorksheet1->Cells->set_Item((TVariant)1,(TVariant)"D",(TVariant)Edit50->Text) ;
: : ExcelWorksheet1->Cells->set_Item((TVariant)1,(TVariant)"E",(TVariant)Edit60->Text) ;
: :
: : ExcelWorksheet1->Cells->set_Item((TVariant)2,(TVariant)"A",(TVariant)Edit19->Text) ;
: : ExcelWorksheet1->Cells->set_Item((TVariant)2,(TVariant)"B",(TVariant)Edit29->Text) ;
: : ExcelWorksheet1->Cells->set_Item((TVariant)2,(TVariant)"C",(TVariant)Edit39->Text) ;
: : ExcelWorksheet1->Cells->set_Item((TVariant)2,(TVariant)"D",(TVariant)Edit49->Text) ;
: : ExcelWorksheet1->Cells->set_Item((TVariant)2,(TVariant)"E",(TVariant)Edit59->Text) ;
: :
: : ExcelWorksheet1->Activate();
: : //ExcelApplication1->Save((TVariant)"C:\\Source\\Test2\\Test1.xls");
: : ExcelWorksheet1->SaveAs(strFile);
: :
: : ExcelApplication1->Disconnect();
: : ExcelWorksheet1->Disconnect();
: : ExcelWorkbook1->Disconnect();
: : }
: :
: : 이렇게 했습니다.
: : 데이터 잘 들어갑니다.
: : 그런데, 현재 이 방법은 버튼을 클릭하면, 엑셀이 실행되고, 각 cell에 데이터를 넣고, 저장을 해주는 형식이잖아요.
: : 제가 하고 싶은건, 버튼을 클릭하면 FileSaveAs 다이얼로그(맞나?)가 뜨고, 거기서 제가 원하는대로 파일명을 입력해서 (이렇게 되면 임의의 디렉토리 선택도 가능하겠죠?) xls 확장자로 저장을 하고 싶습니다.
: : 컴퓨터가 느려서 그런지, 지금 방식대로 하면, 엑셀 띄우는데 너무 오랜 시간이 걸리네요.
: : 그리고 'text.xls 파일이 있습니다. 이 파일을 변경하겠습니까?' 라는 팝업도 계속 뜨네요.
: : 데이터를 덮어쓰지 않고, 각각의 파일 이름으로 저장을 하고 싶은데..(1.xls, 2.xls, 3.xls, ... 이런식으로요..)
: : 도와주세요 슬님~~
:
: 답변이 늦었네요^^;; 죄송합니다 일이 많아서;;
:
: 우선 팝업을 안뜨게 하는 방법은 이렇습니다.
:
: ExcelApplication에서 Open을 실행시키시기 전에 수행해주시면 됩니다.
:
: ExcelApp->Connect(); 엑셀을 링크 시키시고
: ExcelApp->set_Visible(0,false); 숨겨서 실행합니다.
: ExcelApp->set_DisplayAlerts(TDefLCID(), false); 그리고 팝업을 띄우지 않게 하죠 그대신 에러가 일어날 상황을 처리해 주셔야 합니다.
:
: 원하시는게 새로운 파일을 생성하시는 거라면...
:
: 우선 ExcelApp->Add() 를 이용하셔서 새로운 파일을 생성하신후에
:
: 원하시는 파일명으로
:
: ExcelWb->SaveAs(m_strFileName,
: TNoParam(),
: TNoParam(),
: TNoParam(),
: TNoParam(),
: TNoParam(),
: (Excel_xp::XlSaveAsAccessMode) 3/*[in,def,opt]*/,
: TNoParam(),
: TNoParam(),
: TNoParam(),
: TNoParam(),
: TNoParam(),
: TDefLCID());
:
: 해주시면 됩니다.
:
: 이때 FileSaveDialog에서 받아온 파일 이름(혹은 경로)로 원하시는 파일 명을 넣어주시면 되죠...
:
: 파일을 생성하시기전에
:
: FileExists()로 파일이 존재 하는지 확인하시고 존재한다면
:
: DeleteFile()로 파일을 삭제하신후에 SaveAs()해주셔야 안전할껍니다.
:
: 그리고 FileSaveDialog의 프로퍼티를 잘 수정하셔서 .xls 가 가능하도록 해주시면 되겠죠...
:
: 그리고 SaveAs()에 들어가는 파일명은 tagVariant 이므로 (TVariant)로 캐스팅 해주시면 됩니다.
:
: 그럼....
:
: 즐프하세요^^
|