Cara menggunakan MFC untuk mengotomatisasi Excel dan mengisi berbagai dengan Array

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 186120 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Artikel ini menunjukkan bagaimana untuk mengotomatisasi Microsoft Excel dan mengisi multi-Cell kisaran dengan sebuah array nilai.

INFORMASI LEBIH LANJUT

Untuk mengisi berbagai multi-cell tanpa mempopulasikan sel satu per satu, Anda harus membuat dua dimensi varian SAFEARRAY yang Anda lulus ke Excel oleh memanggil fungsi SetValue untuk berbagai objek. Langkah berikut menggambarkan proses ini.

Catatan untuk mengotomatisasi Microsoft Excel 2000 dan 2002

Kode contoh dalam artikel ini menggunakan kelas pembungkus dihasilkan dari Excel 97 perpustakaan objek (Excel 8.olb). Dengan sedikit modifikasi, ini kode dapat diterapkan untuk klien otomasi yang menggunakan kelas pembungkus untuk Excel 2000 (Excel9.olb) atau Excel 2002 (Excel.olb). Untuk tambahan informasi tentang cara menggunakan kode contoh yang dijelaskan dalam artikel ini dengan Microsoft Excel 2000 atau perpustakaan jenis 2002, klik nomor artikel berikut untuk menampilkan Basis Pengetahuan Microsoft:
224925 INFO: Perpustakaan jenis untuk kantor dapat berubah dengan rilis baru

Langkah-langkah untuk membuat proyek

  1. Ikuti langkah-langkah 1 sampai 12 dalam artikel berikut di Microsoft Pengetahuan dasar untuk membuat contoh proyek yang menggunakan IDispatch antarmuka dan fungsi anggota didefinisikan dalam perpustakaan jenis Excel8.olb:
    178749 Cara membuat sebuah proyek otomatisasi menggunakan MFC dan perpustakaan jenis
  2. Untuk kotak dialog dibuat di langkah 4 dan 5 artikel orangtua 178749, menambahkan kontrol berikut dengan properti yang ditentukan. Juga menambahkan variabel anggota yang terkait:
                                      Member                Member
          Control   Name              Variable Type         Variable Name
          -----------------------------------------------------------------
          Edit      IDC_STARTINGCELL  m_sStartingCell       CString
          Edit      IDC_NUMROWS       m_iNumRows            short
          Edit      IDC_NUMCOLS       m_iNumCols            short
          CheckBox  IDC_STRING        m_bFillWithStrings    BOOL
    					
  3. Di atas AutoProjectDlg.cpp file, tambahkan baris berikut:
          #include "excel8.h"
    					
  4. Tambahkan kode berikut untuk CAutoProjectDlg::OnRun() di AutoProjectDlg.cpp file.

    Contoh kode

          // OLE Variant for Optional.
          COleVariant VOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
    
          _Application objApp;
    
          _Workbook objBook;
          Workbooks objBooks;
          Worksheets objSheets;
          _Worksheet objSheet;
          Range range;
    
          if(!UpdateData(TRUE))
          {
             return;
          }
    
          // Instantiate Excel and start a new workbook.
          objApp.CreateDispatch("Excel.Application");
          objBooks = objApp.GetWorkbooks();
          objBook = objBooks.Add(VOptional);
          objSheets = objBook.GetWorksheets();
          objSheet = objSheets.GetItem(COleVariant((short)1));
    
          //Get the range where the starting cell has the address
          //m_sStartingCell and it's dimensions are m_iNumRows x m_iNumCols.
          range = objSheet.GetRange(COleVariant(m_sStartingCell),
                                    COleVariant(m_sStartingCell));
          range = range.GetResize(COleVariant(m_iNumRows),
                                  COleVariant(m_iNumCols));
    
          //*** Fill the range with an array of values.
    
          //Create the SAFEARRAY.
          COleSafeArray saRet;
          DWORD numElements[2];
          numElements[0]= m_iNumRows;   //Number of rows in the range.
          numElements[1]= m_iNumCols;   //Number of columns in the range.
    
          if(m_bFillWithStrings)
          {
             saRet.Create(VT_BSTR, 2, numElements);
          }
          else
          {
             saRet.Create(VT_R8, 2, numElements);
          }
    
          //Fill the SAFEARRAY.
          long index[2];
          long iRow;
          long iCol;
    
          for(iRow=0;iRow<=m_iNumRows-1;iRow++)
          {
             for(iCol=0;iCol<=m_iNumCols-1;iCol++)
             {
                index[0] = iRow;
                index[1] = iCol;
                if(m_bFillWithStrings)      //Fill with Strings.
                {
                   VARIANT v;
                   CString s;
                   VariantInit(&v);
                   v.vt = VT_BSTR;
                   s.Format("r%dc%d", iRow, iCol);
                   v.bstrVal = s.AllocSysString();
                   saRet.PutElement(index, v.bstrVal);
                   SysFreeString(v.bstrVal);
                   VariantClear(&v);
                }
                else                     //Fill with Numbers.
                {
                   double d;
                   d = (iRow*1000) + iCol;
                   saRet.PutElement(index, &d);
                }
             }
          }
    
          //Set the range value to the SAFEARRAY.
          range.SetValue(COleVariant(saRet));
          saRet.Detach();
    
          //Return control of Excel to the user.
          objApp.SetVisible(TRUE);
          objApp.SetUserControl(TRUE);
    					
  5. Mengkompilasi dan menjalankan proyek.
  6. Tentukan nilai berikut untuk kontrol pada kotak dialog:
          Control               Contents
          ------------------------------
          IDC_STARTINGCELL      A1
          IDC_NUMROWS           10
          IDC_NUMCOLS           5
          IDC_STRING            True
    						
    Klik OK.

    Hasil: Buku kerja baru yang dihasilkan dan sel A1:E10 pertama lembar kerja diisi dengan nilai-nilai string.
  7. Tentukan nilai berikut untuk kontrol pada kotak dialog:
          Control               Contents
          ------------------------------
          IDC_STARTINGCELL      C3
          IDC_NUMROWS           2
          IDC_NUMCOLS           9
          IDC_STRING            False
    						
    Klik OK.

    Hasil: Buku kerja baru yang dihasilkan dan sel C3:K4 pertama lembar kerja diisi dengan nilai-nilai numerik.

REFERENSI

Untuk informasi lebih lanjut tentang mengotomatisasi Microsoft Excel menggunakan MFC, silakan lihat artikel berikut pada Basis Pengetahuan Microsoft:
186122 Cara menggunakan MFC untuk mengotomatisasi Excel dan mendapatkan sebuah Array dari berbagai

184663 Cara untuk menanamkan dan mengotomatisasi Microsoft Excel Worksheet dengan MFC

179706 Menggunakan MFC untuk mengotomatisasi Excel dan membuat/Format buku kerja baru

178781 Cara mengotomatisasi Excel menggunakan MFC dan lembar kerja fungsi

178783 Cara menggunakan MFC membuat Microsoft Excel bagan

Properti

ID Artikel: 186120 - Kajian Terakhir: 16 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 97 Standard Edition
Kata kunci: 
kbautomation kbcode kbhowto kbinterop kbmt KB186120 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:186120

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com