|
답변 너무 고맙습니다.
savedialog를 안쓰는건 아니구요 ,
저장할 폴더를 미리 생성하려는데 목적이 있습니다.
폴더를 미리 만들고 만든 폴더안에 test1.xls , test2.xls 이런식으로 저장하고 싶은거구요.
그러기위해서 저장할 경로를 미리 지정해주는 거죠.
만약 님이 말하신데로 저장 경로에 원하는 폴더명이 존재하지 않을 경우 미리 생성을 해야 하구요.
그래서 edit1->text = " 오리 "
edit2->text = " 추석 "
을 입력 받고 저장 버튼을 누르면 c\오리\추석 이라는 지정 위치에 파일이름을 입력하는 창이 뜨게되는거죠.
이곳에 파일이름을 test.xls 치게 되면 결국 c\오리\추석\test.xls 이렇게 저장이 되는겁니다.
sFullName="C:\\\\"+Edit1->Text +"\\"+Edit2->Text+"\\";
ForceDirectories(ExtraceFilePath(sFullName));
ExtraceFileName(SaveDialog1->FileName );
이렇게 했는데 현재 ExtraceFilePath , ExtraceFileName 이게 define이 안된다고 나오는데
이건 어떤 컴포넌트가 되는거죠/..?
그리고 질문하나 더 드리겟습니다.
ExcelWorksheet1->Cells->set_Item((TVariant)5,(TVariant)"A",(TVariant)"Test 2B") ; //TIME
이걸 보면 엑셀 시트에 Test 2B라고 저장이 됩니다 . Test 2B 처럼 지정한 문자가 아닌
다른곳에서 읽어온 데이터를 엑셀에 저장하려면 어떤식으로 해야 하나요?
Form1->EditHour->Text = prtc->hour;
이 부분이 시간을 읽어오는 부분인데 시간을 엑셀 시트에 저장하고 싶다면
ExcelWorksheet1->Cells->set_Item((TVariant)5,"A",prtc->hour) ; //TIME
이런식으로 햇는데 어떻게 해야 하는지요??
점심 맛있게 드세요^^*
장성호 님이 쓰신 글 :
: 아직도 질문의 목적을 제대로 이해 못했습니다.
: 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 를 잘못사용햇다고 나오면서 그뒤로 다운되버립니다~
: : : : : :
: : : : : : 도움 부탁드려요
|