[轉貼]得出Excel文件中的Sheet表名

有關於C/C++的語法, 程式等
回覆文章
頭像
tim
文章: 1380
註冊時間: 2008年 11月 26日, 00:49

[轉貼]得出Excel文件中的Sheet表名

文章 tim »

轉貼自: http://delphi.ktop.com.tw/topic.asp?TOPIC_ID=32917

代碼: 選擇全部

     
    //功能: 得出Excel文件中的Sheet表名 
    void __fastcall TfmImportKtzl::GetExcelTable(AnsiString FileName,TStrings *Lines) 
    { 
      int iFileHandle; 
      int iFileLength; 
      char *pszBuffer; 
      Lines->Clear(); 
      try 
        { //=======将文件读入pszBuffer字符串中 
          iFileHandle = FileOpen(FileName, fmOpenRead); 
          iFileLength = FileSeek(iFileHandle,0,2); 
          FileSeek(iFileHandle,0,0); 
          pszBuffer = new char[iFileLength+1]; 
          FileRead(iFileHandle, pszBuffer, iFileLength); 
          FileClose(iFileHandle); 
          //=======查找标志 
          for( int i=0;i<=iFileLength+1;i++ ) 
            { 
            if( pszBuffer[i] == 0x0b &&             pszBuffer[i+1] == 0x00 &&             pszBuffer[i+2] == 0x00 &&             pszBuffer[i+3] == 0x00 &&             pszBuffer[i+4] == 0x00 &&             pszBuffer[i+5] == 0x00 &&             pszBuffer[i+6] == 0x00 &&             pszBuffer[i+7] == 0x00 &&             pszBuffer[i+8] == 0x1e &&             pszBuffer[i+9] == 0x10 &&             pszBuffer[i+10] == 0x00 &&             pszBuffer[i+11] == 0x00 ) 
                    { 
                    int h=(int)pszBuffer[i+12]; //==工作表的个数 
                    i=i+16;  //-----将指针指向表名数据 
                    for( int j=1;j<=h;j++) 
                      { 
                        char *TableName = new char[i]; 
                        strncpy(TableName,&pszBuffer[i+4],(int)pszBuffer[i]); 
                        Lines->Add(TableName); 
                        delete [] TableName; 
                        i=i+(int)pszBuffer[i]+4;   //-----将指针移到下一个表名数据 
                      } 
                    } 
            } 
     
            delete [] pszBuffer; 
       } 
        catch(...) 
        { 
          Application->MessageBox("Excel 文件无法打开!","", IDOK); 
        } 
    } 
多多留言, 整理文章, 把經驗累積下來.....
回覆文章