C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[54208] Re:Re:Re:[질문] 현재 열려있는 엑셀파일(*.xls or *.csv)에 데이터 저장시 꼭 에러가 나네요
장성호 [nasilso] 3066 읽음    2008-08-04 14:20
님께서 원하시는것은
엑셀 파일에다가 Log를 기록하는데...
중간에 유저가 file 열어서 보고있는중에도 계속 Log를 기록하고 싶다는 얘기 같네요

엑셀에서 파일을 오픈할때 Shared 모드로 open하도록 하는 옵션이 있으면 몰라도..(아마 없을듯)
기본적으로는 불가능 할것 같구요
꼼수를 써야할듯...


꼼수1.
Excel에 기록을 하다가...
파일오픈 에러가 나면 다른 임시파일에 기록하여 둔다.
다시 파일오픈 성공하면 임시파일의 내용을 옮기고 새로운 로그를 기록한다.

꼼수2.
Log파일을 항상 2개 만든다. (사용자에게 공개된 파일과 숨겨둔 파일)
실제 로그는 숨겨둔 파일에 기록을 하고
공개된 파일에는 계속 덮어쓰기 한다.
사용자가 공개된 파일을 열어서 보고있으면 공개된 파일에 덮어쓰기는 불가능하겠지만..
숨겨둔 파일에 로그는 계속 남는다.

...

위 꼼수들의 문제점
프로그램을 종료할때까지  Excel파일을 닫지 않으면 사용자에게 공개된 excel파일은 최신 log파일이 아니게된다.
프로그램이 종료할때까지 Log파일을 엑셀프로그램에서 잡고 있으면
hide프로세서를 하나 띄워서... 해당 프로그램이 종료될때까지 기다렸다가.. file-copy 작업을 할수도....

그럼..


몰라서 님이 쓰신 글 :
: 조금더 자세히 좀 가르쳐 주십시요...
: 일정시간(1초마다) 어떤 데이터를 엑셀파일에 연속적으로 저장하고 있습니다.
: 그런데 만약 사용자가 현재까지 저장된 결과를 보겠다고 엑셀파일을(*.xls or *.csv) 화일을 열어버리면
: 에러가 나버리네요.
: 님 말씀대로 일반 텍스트파일은 테스트해보니 별문제가 없네요.
:
:
: 장성호 님이 쓰신 글 :
: : 현재 열려있는 엑셀파일에 데이타를 저장하는 것은...
: :
: : 기본적으로는  방법이 없습니다.
: :
: : Excel 프로그램에서 파일을 혼자쓰겠다고 잡고 있으니까요
: : Notepad같은 Text 에디터의 경우 file을 읽어온후 close해버립니다.
: : 그러니 open된 text파일에다가 덮어쓰는것이 가능하구요
: :
: :
: : 굳이 한다면?
: : File을 Open해서 잡고있는 엑셀프로그램을 통해서 가능한 방법이 있을수도 있을듯 하네요
: : 이미 파일을 Open해 잡고있는 엑셀프로그램의 내용 또한  바뀌어야 하죠
: :
: :
: : -----------------------------------------------------------------------------
: :
: : 그런데 님께서 하시고자 하시는것이..
: : Excel파일에다가 특정양식문서를 만들어 두고
: : 거기다가 데이타를 집어 넣어 저장하려는것인가요?
: :
: :
: : 저도 양식문서를 이용하는 무엇 좋은 방법이 있는지는 모르겠지만
: :
: : 원본   양식 Excel문서만들어 두고 
: : 내용을 저장할때 원본을 복사해서 Temp파일을 만들고 그것을 Open하여 작업했습니다.
: : 같은 프로그램이 두개 3개 떠도 문제 Temp파일만 늘어나고 문제 없었죠
: : 그리고 Save할땐 항상 SaveAs로 ...
: :
: :
: : 또하나...
: :    1. OLE로 새 WorkBook을 만듭니다.
: :    2. 원본 양식 엑셀 파일을 Open하여서 내용을 새 WorkBook에 그대로 복사합니다.
: :    3. 원본 양식 엑셀 파일을 close합니다.
: :    4. 새 WorkBook에 내용을 입력한후 Save합니다.
: :
: :    ; 요건 해보진 않았는데... 잘될것 같네요
: :
: :
: : 엑셀을 OLE로 제어하는 방법은 여기 검색하면 많이 나옵니다.
: :
: : 키워드는
: : CreateObject,Excel ,  OLE , Varient  , OlePropertyGet ,OlePropertySet  등으로 검색해보세요
: :
: : 그럼..
: :
: :
: : 몰라서 님이 쓰신 글 :
: : : 현재 열려있는 엑셀파일(*.xls or *.csv)에 데이터 저장시 꼭 에러가 나네요... 파일이 열려있어서 그런것 같은데...
: : : 그런데 *.txt 파일은 열려있어도 데이터를 추가 저장해도 에러가 안나는데... 무슨 방법이 없나요.
: : :
: : : 그리고 외국서적이라도..
: : : 먼저 엑셀파일에 일정 포맷을 만들어 놓고 (보고서 형식 같은것)
: : : 엑셀파일에 데이터를 저장하는 다양한 방법이 설명된 책이 없나요...
: : : OLE 를 이용하는 방법 등등

+ -

관련 글 리스트
54170 [질문] 현재 열려있는 엑셀파일(*.xls or *.csv)에 데이터 저장시 꼭 에러가 나네요 몰라서 1695 2008/07/30
54200     Re:[질문] 현재 열려있는 엑셀파일(*.xls or *.csv)에 데이터 저장시 꼭 에러가 나네요 장성호 2158 2008/08/04
54201         Re:Re:[질문] 현재 열려있는 엑셀파일(*.xls or *.csv)에 데이터 저장시 꼭 에러가 나네요 몰라서 2304 2008/08/04
54208             Re:Re:Re:[질문] 현재 열려있는 엑셀파일(*.xls or *.csv)에 데이터 저장시 꼭 에러가 나네요 장성호 3066 2008/08/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.