::: µ¨ÆÄÀÌ Tip&Trick :::

µ¨ÆÄÀÌ Tip&Trick ¼º°Ý¿¡ ¸ÂÁö ¾Ê´Â ±¤°í,ºñ¹æ,Áú¹®ÀÇ ±ÛÀº Áï½Ã »èÁ¦Çϸç
³»¿ëÀ» º¹»çÇÏ¿© »ç¿ëÇÒ °æ¿ì ¹Ýµå½Ã À̰÷(http://www.howto.pe.kr)À» Ãâó·Î ¸í½ÃÇÏ¿© ÁÖ¼¼¿ä


Category

  ±è¿µ´ë(2003-03-06 22:02:24, Hit : 7327, Vote : 2077
 Save DBGrid To Excel

function SaveDBGridToExcel(dbgrd: TDBGrid): Boolean ;
{
  SaveDBGridToExcel.
  Saves the data related to the database grid to an Excel spreadsheet.
  Arguments: dbgrd - TDBGrid
}
var
  intRow, // index for query rows
  intCol : Integer ; // index for query columns
  ExcelApp, // Excel application
  WorkBook, // Excel workbook
  WorkSheet : Variant ; // Excel sheet in workbook
  qry : TQuery ; // Query related to dbgrd
  BookMark : TBookMark ; // Bookmark for query
  SaveDialog : TSaveDialog ;
begin
  // Initialize
  ExcelApp := Unassigned ;
  SaveDialog := nil ;
  qry := nil ;
  BookMark := nil ;
  Result := False ;

  try
    // Dereference database grid to get datasource and supplying query
    qry := TQuery(TDataSource(dbgrd.DataSource).DataSet) ;

    // If the query is inactive or record count < 1 then outta here
    if qry.Active = False then
      exit ;
    if qry.RecordCount < 1 then
      exit ;

    // Create save dialog and set it options
    SaveDialog := TSaveDialog.Create(dbgrd.Parent) ;
    with SaveDialog do
    begin
      DefaultExt := 'xls' ;
      Filter := 'Excel files (*.xls)|*.xls|All files (*.*)|*.*' ;
      Options := [ofOverwritePrompt,ofPathMustExist,ofNoReadOnlyReturn,ofHideReadOnly] ;
      Title := 'Specify Excel file to which to save the grid information';
    end ;

    // Execute save dialog
    if SaveDialog.Execute then
    begin
      SEIApp.SetBusy(True) ;

      // Delete entered filename if it exists
      If FileExists(SaveDialog.FileName) then
        DeleteFile(SaveDialog.FileName) ;

      // Create instance of Excel
      try
        ExcelApp := CreateOLEObject('Excel.Application') ;
      except
        MessageDLG('Unable to start Excel',mtError,[mbOK],0) ;
        Raise ;
      end ;

      {$IFDEF IAMDEBUGGING}
      ExcelApp.Visible := True ;
      {$ENDIF}

      // Create Excel workbook
      ExcelApp.WorkBooks.Add ;

      // Get the active workbook
      WorkBook := ExcelApp.ActiveWorkBook ;

      // Get the active sheet
      WorkSheet := WorkBook.ActiveSheet ;

      // Insert column headers into sheet
      intRow := 1 ;
      for intCol := 1 to qry.FieldCount do
        WorkSheet.Cells[intRow,intCol].Value := qry.Fields[intCol-1].FieldName ;

      // Disable controls attached to query
      qry.DisableControls ;

      // Save place in query
      BookMark := qry.GetBookmark ;

      // Position to first row
      qry.First ;

      // Insert data into sheet
      while (not qry.EOF) do
      begin
        SEIApp.SetBusy(True) ;

        inc(intRow) ;
        for intCol := 1 to qry.FieldCount do
        begin
          WorkSheet.Cells[intRow,intCol].Value := qry.Fields[intCol-1].AsString ;
        end ;

        qry.Next ;
      end ;

      SEIApp.SetBusy(True) ;

      // Restore position in query
      qry.GotoBookmark(BookMark) ;

      // Free bookmark
      qry.FreeBookmark(BookMark) ;

      // Enable controls attached to query
      qry.EnableControls ;

      // Save Excel spreadsheet
      WorkBook.SaveAs(SaveDialog.FileName) ;
      WorkBook.Close ;

      // Quit excel
      ExcelApp.Quit ;

      // Function result is OK
      Result := True ;

      // Status user
      ShowMessage('Completed save to '+SaveDialog.FileName) ;
    end ;

    // Free save dialog
    SaveDialog.Free ;

    SEIApp.SetBusy(False) ;

  except on E:Exception do // Exceptions
    begin
      // If Excel was started, quit it.
      if (ExcelApp <> Unassigned) then
        ExcelApp.Quit ;

      if SaveDialog <> nil then
        SaveDialog.Free ;

      // Restore position in query and enable controls
      if BookMark <> nil then
      begin
        qry.GoToBookMark(BookMark) ;
        qry.FreeBookMark(BookMark) ;
        qry.EnableControls ;
      end ;

      SEIApp.SetBusy(False) ;

      // Status user
      MessageDLG('(SaveDBGridAsExcel) exception: '+E.Message, mtError,[mbOK],0) ;

      // Reraise exception
      raise;
    end;
  end; {try}
end;





411   [À©µµ¿ìÁî API] ¸ð¼­¸®°¡ µÕ±Ù(rounded ends) TEdit ¸¸µé±â  ±è¿µ´ë 2003/03/07 5111 1298
410   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] TOpenDialog ÀÇ '¼±ÅÃ','Ãë¼Ò' ¹öư À̸§ ¹Ù²Ù±â  ±è¿µ´ë 2003/03/07 4442 1342
409   [À©µµ¿ìÁî API] ·¹Áö½ºÆ®¸® Àüü °Ë»öÇÏ±â  ±è¿µ´ë 2003/03/07 4314 1159
408   [À©µµ¿ìÁî API] ALT_F4 hot key °¡·Îä±â  ±è¿µ´ë 2003/03/07 5742 1649
407   [µ¥ÀÌÅͺ£À̽º] µ¿ÀûÀ¸·Î SELECTÀÇ GROUP BY ¹® ¸¸µé±â  ±è¿µ´ë 2003/03/07 4286 953
406   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ListView ÀÇ item À» °­Á¦·Î ÆíÁý»óÅ·Π¸¸µé±â  ±è¿µ´ë 2003/03/07 4736 1231
405   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] MessageDlg()ÀÇ ÆùÆ®¸¦ ¹Ù²Ù¾î¼­ ¶ç¿ì±â  ±è¿µ´ë 2003/03/07 4063 1079
404   [À©µµ¿ìÁî API] À©µµ¿ìÁî Ž»ö±âÀÇ ÆÄÀÏ, ÄÄÇ»ÅÍ Ã£±â È­¸é ¶ç¿ì±â  ±è¿µ´ë 2003/03/07 6299 1648
403   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] WideString À» String À¸·Î ¹Ù²Ù±â  ±è¿µ´ë 2003/03/07 4619 1153
402   [À©µµ¿ìÁî API] ´Ù¸¥ ApplicationÀÇ È­¸é¿¡ ±ÛÀÚ,±×¸²À» Ãâ·ÂÇÏ±â  ±è¿µ´ë 2003/03/07 3477 880
401   [À©µµ¿ìÁî API] À©µµ¿ìÁî '½ÃÀÛ' ¸Þ´º Refresh ½ÃŰ±â  ±è¿µ´ë 2003/03/07 4723 1426
400   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] StringGrid ¿¡¼­ ÇÁ·Î±×·¥À¸·Î MultiSelect ½ÃŰ±â  ±è¿µ´ë 2003/03/06 5702 1205
399   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] StringGrid ÀÇ ¼±Åÿµ¿ª¸¸ Ŭ¸³º¸µå·Î º¹»çÇÏ±â  ±è¿µ´ë 2003/03/06 5053 1115
398   [À©µµ¿ìÁî API] RichEdit¿¡ ÀÔ·ÂÇÑ ¹®ÀåÀÇ ½ÇÁ¦ ³ôÀÌ ±¸ÇÏ±â  ±è¿µ´ë 2003/03/06 5173 1437
397   [À©µµ¿ìÁî API] DDE ¾²Áö ¾Ê°í IEÀÇ ÇöÀç URL °¡Á®¿À±â  ±è¿µ´ë 2003/03/06 6109 1692
396   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] MemoÀÇ ÇàÀÇ ¹®ÀÚ¼ö¸¦ Á¦ÇÑÇϰí WordWrap½ÃŰ±â  ±è¿µ´ë 2003/03/06 5390 1322
395   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] OEM conversion  ±è¿µ´ë 2003/03/06 4430 1270
394   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ASCII printing  ±è¿µ´ë 2003/03/06 5465 6332
393   [COM/OLE] DelphiÀÇ OCX¸¦ InstallShield·Î ¹èÆ÷ÇÏ´Â ¹æ¹ý  ±è¿µ´ë 2003/03/06 8530 5668
  [µ¥ÀÌÅͺ£À̽º] Save DBGrid To Excel  ±è¿µ´ë 2003/03/06 7327 2077
391   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] StringGrid ÀÇ ³»¿ëÀ» Ŭ¸³º¸µå·Î º¹»çÇÏ±â  ±è¿µ´ë 2003/03/06 4605 1069
390   [À©µµ¿ìÁî API] ·¹Áö½ºÆ®¸®ÀÇ º¯°æ¿©ºÎ ¾Ë¸®´Â 2°¡Áö ¹æ¹ý  ±è¿µ´ë 2003/03/06 4891 1301
389   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] desktop ¹è°æÈ­¸éÀ» ÆûÀÇ ¹è°æÈ­¸éÀ¸·Î ±×¸®±â  ±è¿µ´ë 2003/03/06 3817 1047
388   [¸ÖƼ¹Ìµð¾î] JPEG, WAVE ¸¦ resource ÆÄÀÏ¿¡ ³Ö°í Àоî¿À±â  ±è¿µ´ë 2003/03/06 5513 1243
387   [½Ã½ºÅÛ] ¸¶ÀÌÅ© º¼·ý Á¶ÀýÇÏ±â  ±è¿µ´ë 2003/03/06 4797 1304
386   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] À©µµ¿ìÁî "³¯Â¥/½Ã°£" ¼³Á¤È­¸é ¶ç¿ì±â  ±è¿µ´ë 2003/03/06 6297 1834
385   [½Ã½ºÅÛ] ¿Àµð¿À CDÀÇ º¼·ý Á¶ÀýÇÏ±â  ±è¿µ´ë 2003/03/06 3781 1037
384   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ¹®ÀÚ¿­ ¼ö½Ä¹®Àå(expression)ÀÇ °á°ú ±¸ÇÏ±â  ±è¿µ´ë 2003/03/06 3577 904
383   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ƯÁ¤ ColorÀÇ Invert Color ±¸ÇÏ±â  ±è¿µ´ë 2003/03/06 4400 1324
382   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] µÎ°³ÀÇ RichEdit »çÀÌ¿¡ ³»¿ë º¹»çÇÏ±â  ±è¿µ´ë 2003/03/06 6057 1406
381   [½Ã½ºÅÛ] Redirecting DOS Application Output  ±è¿µ´ë 2003/03/06 4881 1234
380   [½Ã½ºÅÛ] How do I use SetWindowsHookEx ?  ±è¿µ´ë 2003/03/06 7102 979
379   [À©µµ¿ìÁî API] KeyDownÀÇ BeepÀ½À» ¾ø¾ÖÀÚ...  ±è¿µ´ë 2003/03/06 4850 1244
378   [µ¥ÀÌÅͺ£À̽º] ƯÁ¤ ÆûÀÇ ÇöÀç ÆíÁýÁßÀÎ DB Field ±¸ÇÏ±â  ±è¿µ´ë 2003/03/06 4187 1120
377   [À©µµ¿ìÁî API] ÇÁ·Î±×·¥À¸·Î Screensaver µî·ÏÇÏ´Â µÎ°¡Áö ¹æ¹ý  ±è¿µ´ë 2003/03/06 4631 1296
376   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] TObjectÀÇ ÇÁ·ÎÆÛƼ¸¦ ¹®ÀÚ¿­·Î ÂüÁ¶ÇÏ±â  ±è¿µ´ë 2003/03/06 5310 1604
375   [À©µµ¿ìÁî API] ¿ÜºÎ ÇÁ·Î±×·¥À» ÃÖ»óÀ§·Î ¼³Á¤ÇÏ±â  ±è¿µ´ë 2003/03/06 5389 1249
374   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] À̹ÌÁö¸¦ ¸¶¿ì½º·Î drag ÇØ¼­ zoom ÇÏ±â  ±è¿µ´ë 2003/03/06 3796 1046
373   [À©µµ¿ìÁî API] Æú´õ³ª ÆÄÀÏÀÇ À©µµ¿ìÁî µî·ÏÁ¤º¸ dialog ¶ç¿ì±â  ±è¿µ´ë 2003/03/06 5230 1490
372   [³×Æ®¿÷/ÀÎÅͳÝ] How to bring a network down - "Win Nuke"  ±è¿µ´ë 2003/03/06 7464 2011

[ÀÌÀü 10°³] [1]..[11][12][13][14] 15 [16][17][18][19][20]..[25] [´ÙÀ½ 10°³]
 

Copyright 1999-2023 Zeroboard / skin by zero