|
아직도 질문의 목적을 제대로 이해 못했습니다.
SaveDialog를 쓰지 않고 저장하려는 것인지요?
1. 아래와같이 파일명을 만드시면 됩니다.
Edit1->Text = "오리";
Edit2->Text = "추석";
String sFullName;
String sFName="test.xls";
sFullName="C:\\0920\\"+Edit1->Text +"\\"+Edit2->Text+"\\"+ sFName;
2. 폴더가 존재하지 않을 수 있으니 미리 만들어야 겠지요
ForceDirectories(ExtraceFilePath(sFullName));
이렇게 하면 모든경로를 만들어 줍니다.
있으면 그냥 넘어가고...
3. SaveDialog1->FileName 에서 경로를 뺀 filename만 빼낼려면?
String sfname = ExtraceFileName(SaveDialog1->FileName );
그럼..
아자! 님이 쓰신 글 :
: 밑에 장성호님이 쓰신데로 하니까 오류가 생기는데요.
:
: 질문을 다시 설명하겠습니다.
:
: FORM에서 EDIT 창으로 폴더이름을 입력 받습니다.
:
: 폴더 이름 1 : 오리
: 폴더 이름 2 : 추석
:
: 이렇게 입력을 받고 저장 버튼을 누르면 C\오리\추석\파일이름.XLS 이런식으로 저장이 되는겁니다.
:
: 이렇게 하고 싶은데 현재는 저장 버튼을 누르고 나서 폴더를 생성하고 원하는 경로를 선택하게 되어있는거죠.
:
:
:
: 장성호 님이 쓰신 글 :
: : 질문을 잘 이해못했습니다.
: : 잘 코딩하신것 같은데...
: :
: :
: : 얼핏 질문하신 목적이 아래와 같은것 아닌가 하여 적어봅니다.
: :
: : if( SaveDialog1->Execute() ) // 저장을 원하는 Folder와 파일이름 결정
: : {
: : //Excel저장 루틴
: : ....
: : ExcelWorksheet1->SaveAs((WideString)(SaveDialog1->FileName));
: : ....
: : }
: :
: :
: : 그러니까 Execute()함수의 결과가 true이면 저장루틴을....
: :
: : 질문의 목적에 맞는 답변인지요...
: :
: :
: : 그럼.
: :
: :
: : 아자! 님이 쓰신 글 :
: : : 좋은 정보로 무사히 저장을 했습니다.
: : : 그런데 저장할 경로를 선택할수는 있는데
: : : 만약 저장할때 지정된 폴더에 저장하려면 어떻게 해야 하나요?
: : :
: : : 예를 들면 메모리에서 데이타를 읽어 그 값들을 엑셀에 저장하려고 하는데
: : :
: : : 날짜를 입력하세요 0920
: : : 이름을 입력하세요 아자
: : :
: : : 이런후에 c/0920/아자/안에 파일이름을 저장하고 싶습니다.
: : : =================================================================================================
: : : ExcelApplication1->Connect();
: : : ExcelApplication1->set_Visible(0, false); // true 화면에 보임, false 화면에 보이지 않음
: : :
: : : 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)"VERSION : ") ; //버젼
: : : ExcelWorksheet1->Cells->set_Item((TVariant)2,(TVariant)"A",(TVariant)"S/N : ") ; //시리얼 넘버
: : : ExcelWorksheet1->Cells->set_Item((TVariant)3,(TVariant)"A",(TVariant)"DATE : ") ; //날짜
: : : ExcelWorksheet1->Cells->set_Item((TVariant)4,(TVariant)"A",(TVariant)"TIME P[mbar] T[C] STATE") ; //
: : : ExcelWorksheet1->Cells->set_Item((TVariant)5,(TVariant)"A",(TVariant)"Test 2B") ; //TIME
: : : ExcelWorksheet1->Cells->set_Item((TVariant)5,(TVariant)"B",(TVariant)"Test 2B"); //data1
: : : ExcelWorksheet1->Cells->set_Item((TVariant)5,(TVariant)"C",(TVariant)"Test 2B"); // data2
: : : ExcelWorksheet1->Cells->set_Item((TVariant)5,(TVariant)"D",(TVariant)"Test 2B"); // data3
: : :
: : : ExcelWorksheet1->Activate();
: : :
: : : ExcelWorksheet1->SaveAs((WideString)(SaveDialog1->FileName));
: : :
: : :
: : : //Excel 프로그램 종료
: : : ExcelApplication1->Disconnect();
: : : ExcelWorksheet1->Disconnect();
: : : ExcelWorkbook1->Disconnect();
: : :
: : : =================================================================================================
: : : 현재 이렇게 하니까 폴더를 입력받지 않고
: : : 장성호 님이 쓰신 글 :
: : : : 음....
: : : :
: : : : OleContainer 보다
: : : : OLE를 직접코딩해서 쓰심이 좋을것 같습니다.
: : : :
: : : : 그리고 화면에 보여주는 것은 Excel 프로그램 자체를 Form위에 올려도 되지만
: : : : 엑셀 파일의 데이타를 읽어서 TStringGrid 같은데 보여주는것을 권합니다.
: : : :
: : : : 아래 키워드로 여기 Q&A에서 검색해
: : : :
: : : : ExcelApplication
: : : : ExcelWorksheet
: : : : ExcelWorkbook
: : : :
: : : : Variant
: : : : 엑셀
: : : : CreateObject
: : : : OlePropertyGet
: : : : OleProcedure
: : : :
: : : :
: : : : 그럼 ...
: : : :
: : : :
: : : :
: : : : 아자 님이 쓰신 글 :
: : : : : 엑셀파일을 열어서 보여주는걸 하려고 이것저것 찾다가
: : : : :
: : : : : OleContainer1 를 이용하면 된다고 나와 있어서
: : : : :
: : : : : OpenDialog1->Execute();
: : : : :
: : : : : OleContainer1->CreateObjectFromFile("C:\\Test.xls",false);
: : : : :
: : : : : 이렇게 사용했습니다.
: : : : :
: : : : : 저장된 엑셀파일을 선택해서 그안에 데이터 시트를 보여주고 싶은데 이렇게 하니까
: : : : :
: : : : : 에러가 납니다.
: : : : :
: : : : : ㅇㅔ러 메세지는 OleContainer1 를 잘못사용햇다고 나오면서 그뒤로 다운되버립니다~
: : : : :
: : : : : 도움 부탁드려요
|