[TFileStream 을 쓸때 ]
파일이 새로만들때는 아래와 같이 하지만
TFileStream *FStream = new TFileStream("c:\\e.xls", fmCreate);
이미 있는 파일을 읽어오거나 수정할때는 mOpenRead 나 fmOpenReadWrite 를 쓰셔야 합니다.
TFileStream *FStream = new TFileStream("c:\\e.xls", fmOpenRead);
* 모드 (F1 하세요)
fmCreate Create a file with the given name. If a file with the given name exists, open the file in write mode.
fmOpenRead Open the file for reading only.
fmOpenWrite Open the file for writing only. Writing to the file completely replaces the current contents.
fmOpenReadWrite Open the file to modify the current contents rather than replace them.
먼저 저장할때 는?
1. BOF 저장 - 12 Byte
2. RK , Number , Label 를 반복해서 저장 - Cell Header(10~12 Byte ) + Data(4 Byte 또는 8Byte , 기타 )
3. EOF 저장 - 4 BYTE
위와같은 순서가 되잖아요
Cell Header는
CXlsNumber와 CXlsRk 는 10Byte이구
CXlsLabel 은 12 Byte여서 그렇게 표현한것입다.
...
그럼..
초보 님이 쓰신 글 :
: 답변 감사합니다.
: 파일을 열어서 XlsBeginStream(Filename, 0); 후 header를 어떻게 읽어 와야 하는지
: 감이 잘 오지 않습니다. Cell 정보를 10~12 byte 를 읽는 이유도 잘 모르겠습니다.
: ( 제가 저장한건 Column 2개, Record 갯수는 최대 50개 모두 실수로 각 Cell당 4 byte면 될거 같은데요.)
:
: Data를 읽어오는 방법에 대한 자세한 설명이나 예제를 부탁해도 될까요?
: 감사합니다.
:
:
:
:
: : 1.맨처음에 에 header인 bof 12Byte읽어오구요
: : 2.그다음부터 데이타를 파일크기만큼 읽어옵니다.
: : 데이타를 읽을때는
: : 2.1 먼저 Cell정보를 10~12Byte읽어와서 데이타 종류와 , 데이타 길이를 확인하구요
: : 2.2 데이타 길이만큼 읽어와서 int 나 double이나 string으로 변환합니다.
:
:
:
: 장성호 님이 쓰신 글 :
: : 님께서 팁게시판에 이의태님께서 올린 방법을 이용하셨네요
: :
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=201
: :
: : 그 방법의 장점은
: : 1. Excel이 없어도 데이타를 저장할수 있다는것입니다.
: :
: :
: : 하지만 단점은?
: : 1. 지원하는 Data형식이 String , int , float 세가지 뿐이라는것
: : 2. Sheet가 2장 이상은 안된다는것
: : 3. 그리고 무엇보다 Excel 프로그램에서 저장한 데이타는 같은 방식으로 읽을 수 없다는것 등이 있습니다.
: :
: :
: : 하지만 위 방법으로 저장한 xls파일은 write할때 방식으로 read하면 되겠죠
: :
: : WORD CXlsBof[6] = {0x809, 8, 0, 0x10, 0, 0};
: : WORD CXlsEof[2] = {0x0A, 0};
: : WORD CXlsLabel[6] = {0x204, 0, 0, 0, 0, 0};
: : WORD CXlsNumber[5] = {0x203, 14, 0, 0, 0};
: : WORD CXlsRk[5] = {0x27E, 10, 0, 0, 0};
: :
: : [위방식으로 저장한 xls파일 읽기]
: :
: : 1.맨처음에 에 header인 bof 12Byte읽어오구요
: : 2.그다음부터 데이타를 파일크기만큼 읽어옵니다.
: : 데이타를 읽을때는
: : 2.1 먼저 Cell정보를 10~12Byte읽어와서 데이타 종류와 , 데이타 길이를 확인하구요
: : 2.2 데이타 길이만큼 읽어와서 int 나 double이나 string으로 변환합니다.
: : 3. 2번과정을 file길이만큼 반복하다가
: : 데이타 타입니 eof이면 끝내면 됩니다.
: :
: : 직접 코딩해 보시고 안되면.. 다시 질문올리세요
: :
: :
: : -추신-
: :
: : 아래 링크에 excel파일 저장하는 몇가지 방법이 기술되어있습니다.
: : 그중 1번은 님이 지금 하시는 방법이구요
: : 1번 ,2번 ,4번 , 5번이 excel이 pc에 설치되어있지 않아도 저장및 읽어오는 기능이 됩니다.
: : 문론 한계는 있습니다.
: :
: :
: :
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=50156
: :
: : [Excel 저장방법]
: :
: : 1. 직접 바이너리저장
: : 2. XML 스프레드시트
: : 3. OLE 이용
: : 4. CSV 로 저장
: : 5. 탭구분 TEXT파일로 저장
: : 6. 엑셀 지원 StringGrid 이용
: :
: :
: : 그럼..
: :