Du arbetar offline, väntar på att återansluta till Internet

Ako na automatizáciu Excel z MFC a Visual c ++ 2005 alebo Visual C++.ČISTÁ výplň alebo získať údajov v rozsahu pomocou polia

DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.

Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:308407
Pre Microsoft C#.ČISTÁ verziu tohto článku, pozri 302096.
Pre Microsoft Visual Základné.ČISTÁ verziu tohto článku, pozri 302094.
Poznámka: Microsoft Visual c ++ 2005, Microsoft Visual C++.NET 2003 a Microsoft Visual C++.NET 2002 podporu oboch spravovaný kód vzoru, ktorý je poskytované spoločnosťou Microsoft.NET Framework a nespravovaná natívny modelu kód systému Microsoft Windows. Informácie v tomto článku sa vzťahuje iba na nespravovaná Visual c ++ kód.
SUHRN
V tomto krokovom demonštruje, ako automatizovať Program Microsoft Excel z Visual c ++ 2005 alebo Visual C++.NET plnene a načítať hodnoty v multi-cell rozsahu prostredníctvom použitie polí.

Vytvoriť automatizačných klientov pre program Excel

Na vyplnenie multi-cell rozsah bez populating buniek, jeden po čas, môžete nastaviť Hodnota Vlastnosť Rozsah objekt na dvojrozmerné pole. Podobne môžete načítať dvojrozmerné pole hodnôt pre viaceré bunky naraz pomocou Hodnota Vlastnosť. Nasledujúce kroky ukazujú tento proces pre obe Nastavenie a získavanie údajov pomocou dvojrozmerné polia.
  1. Postupujte podľa "Vytvoriť automatizácie klienta" oddiel nasledujúci článok databázy Microsoft Knowledge Base vytvoriť základnú Automatizačných klientov:
    307473 Ako používať typ knižnice pre Office automatizácie z Visual C++.NET
    V kroku 3 pridajte druhé tlačidlo a začiarkavacie políčko na forme. Zmeniť ID na tlačidlo IDC_GETVALUES a titulok na Získajte hodnoty. Zmeniť ID políčka IDC_CHECK a titulok na Naplňte reťazce.

    V kroku 4 článok vyberte "Microsoft Excel 10.0 Object Library", ak sú automatizácia Excel 2002 z balíka Office XP. Predvolené umiestnenie pre program Excel 2002 je C:\Program Files\Microsoft Office\Office10\Excel.exe. Alebo vyberte "Microsoft Excel 11.0 Object Library", ak chcete Microsoft Office Excel 2003. Predvolené umiestnenie programu Excel 2003 je C:\Program Files\Microsoft Office\Office11\Excel.exe. Vyberte nasledujúce rozhrania Microsoft Excel:
    • _Application
    • _Workbook
    • _Worksheet
    • Rozsah
    • Zošity
    • Pracovné hárky
    V kroku 6, pridať nasledujúce # zahŕňajú výkazy priamo po # pragma raz smernice v Autoprojectdlg.h:
    #include "CApplication.h"#include "CRange.h"#include "CWorkbook.h"#include "CWorkbooks.h"#include "CWorksheet.h"#include "CWorksheets.h"					
  2. Pridajte nasledujúce dva verejné členské premenných na CAutoProjectDlg trieda:
    CApplication oExcel;CWorkbook oBook;					
  3. Vaše dialógovom okne, kliknite pravým tlačidlom myši IDC_CHECK a vyberte Pridať premennú. Meno premennej m_bFillWithStrings a kliknite na tlačidlo Dokončiť.
  4. Na vaše dialógové okno, kliknite dvakrát na Spustiť a nahradiť nasledujúci kód
    void CAutoProjectDlg::OnBnClickedRun(){	// TODO: Add your control notification handler code here}					
    s:
    void CAutoProjectDlg::OnBnClickedRun(){	CWorkbooks oBooks;	CWorksheets oSheets;	CWorksheet oSheet;	CRange oRange;	COleVariant covOptional(DISP_E_PARAMNOTFOUND,VT_ERROR);	// If you have not created Excel, create a new instance.	if (oExcel.m_lpDispatch == NULL) {		oExcel.CreateDispatch("Excel.Application");	}	// Show Excel to the user.	oExcel.put_Visible(TRUE);	oExcel.put_UserControl(TRUE);	// Add a new workbook and get the first worksheet in that book.	oBooks = oExcel.get_Workbooks();	oBook = oBooks.Add(covOptional);	oSheets = oBook.get_Worksheets();	oSheet = oSheets.get_Item(COleVariant((short)1));	// Get a range of data.	oRange = oSheet.get_Range(COleVariant("A1"),covOptional);	oRange = oRange.get_Resize(COleVariant((short)5),COleVariant((short)5));	COleSafeArray saRet;	DWORD numElements[2];	numElements[0] = 5;	numElements[1] = 5;	long index[2];	// Create a BSTR or double safe array.	if (m_bFillWithStrings.GetCheck())		saRet.Create(VT_BSTR,2,numElements);	else		saRet.Create(VT_R8,2,numElements);	// Fill the array with data.	for (int iRow = 1; iRow <= 5; iRow++) {		for (int iCol = 1; iCol <= 5; iCol++) {			index[0]=iRow-1;			index[1]=iCol-1;			if (m_bFillWithStrings.GetCheck()) {				CString szTemp;				szTemp.Format("%d|%d",iRow,iCol);				BSTR bstr = szTemp.AllocSysString();				saRet.PutElement(index,bstr);				SysFreeString(bstr);			} else {				double d = iRow * iCol;				saRet.PutElement(index,&d);			}		}	}	// Send the array to Excel.	oRange.put_Value(covOptional,COleVariant(saRet));}					
    Poznámka: V Visual c ++ 2005, musíte pridať spoločný jazyk runtime podporu kompilátor možnosť (/CLR:oldSyntax) úspešne zostaviť predchádzajúcej ukážke kódu.Pridať spoločný jazyk runtime podporu kompilátor možnosť, postupujte nasledovne:
    1. Kliknite na položku Project, a potom kliknite na tlačidloProjectName Vlastnosti.

      Poznámka: ProjectName je zástupný symbol pre názov projektu.
    2. Rozbaľte Konfigurácia vlastnosti, a potom kliknite na tlačidloVšeobecné.
    3. Na pravej table kliknite na položku Vybrať Spoločné Language Runtime podporu, staré Syntax (/ clr:oldSyntax) vSpoločný jazykový modul Runtime support nastavenia projektu.
    4. Kliknite na položkuUplatňovať, a potom kliknite na tlačidlo ok.
    Ďalšie informácie o spoločný jazykový modul runtime kompilátor možnosti poskytovania podpory, nájdete na nasledujúcej webovej lokalite Microsoft Developer Network (MSDN):Tieto kroky sa vzťahujú na celý článok.
  5. Návrat do zobrazení dialógového okna a dvakrát kliknite na Získajte hodnoty. Nahradiť nasledujúci kód
    void CAutoProjectDlg::OnBnClickedGetvalues(){	// TODO: Add your control notification handler code here}					
    s:
    void CAutoProjectDlg::OnBnClickedGetvalues(){	CWorksheets oSheets;	CWorksheet oSheet;	CRange oRange;	COleVariant covOptional(DISP_E_PARAMNOTFOUND,VT_ERROR);	// Make sure that Excel has been started.	if (oExcel.m_lpDispatch == NULL) {		AfxMessageBox("Excel has not been started.  Press button1 to start Excel.");		return;	}	// Get the first worksheet.	oSheets = oBook.get_Worksheets();	oSheet = oSheets.get_Item(COleVariant((short)1));	// Set the range of data to retrieve   	oRange = oSheet.get_Range(COleVariant("A1"),COleVariant("E5"));	// Get the data.	COleSafeArray saRet(oRange.get_Value(covOptional));        long iRows;        long iCols;        saRet.GetUBound(1, &iRows);        saRet.GetUBound(2, &iCols);	CString valueString = "Array Data:\r\n";	long index[2];	// Loop through the data and report the contents.	for (int rowCounter = 1; rowCounter <= iRows; rowCounter++) {		for (int colCounter = 1; colCounter <= iCols; colCounter++) {			index[0]=rowCounter;			index[1]=colCounter;		   			COleVariant vData;			saRet.GetElement(index,vData);			CString szdata(vData);            valueString += szdata;			valueString += "\t";				}		valueString += "\r\n";	}	AfxMessageBox(valueString,MB_SETFOREGROUND,NULL);}					

Test automatizačných klientov

  1. Stlačením klávesu F5 stavať a spustite program vzorky.
  2. Kliknite na položku Spustiť. Program Excel začína nový zošit a zaplní buniek A1:E5 prvého pracovného hárka s číselné údaje z poľa.
  3. Kliknite na položku Získajte hodnoty. Program načíta údaje v bunkách A1:E5 do nového poľa a zobrazí výsledky v okne správy.
  4. Vyberte Naplňte reťazce a kliknite na tlačidlo Spustiť vyplniť bunky A1:E5 s reťazec údajov.
  5. Kliknite na položku Získajte hodnoty Ak chcete zobraziť hodnoty reťazca v okne správy.

Riešenie problémov

Ak pridáte triedy medzivrstva pre Objektová knižnica programu Excel pomocou The Súbor možnosť triedy Z TypeLib Sprievodcu pridaním, môže sa zobraziť chybové hlásenie pri prehľadávaní Objektová knižnica. Chcete vyhnúť tomuto problému, zadajte úplnú cestu a názov pre objekt knižnica namiesto prezerania súbor. Ďalšie informácie, kliknite na tlačidlo nasledujúce číslo článku databázy Microsoft Knowledge Base:
311408 Chyba: „Len na čítanie"upozornenie pri pridávaní MFC triedy z knižnice
Ak sa zobrazí nasledujúce chybové hlásenie, keď ste budovať vašu žiadosť vzorky, zmeniť "Variant DialogBox" v CRange.h na "Variantu _DialogBox":
upozornenie C4003: dostatočne skutočné parametre pre makro "DialogBoxA"
Ďalšie informácie o príčine Táto chyba, pozri nasledujúci článok databázy Knowledge Base:
311407 Chyba: MFC Sprievodca nevyrieši, pomenovanie konflikty s API makrá
ODKAZY
Ďalšie informácie nájdete v časti Microsoft Developer Webová lokalita spoločnosti Network (MSDN): Ďalšie informácie o používaní polia nastaviť a načítanie programu Excel údaje so staršími verziami programu Visual Studio nájdete nasledujúce Knowledge Base články:
186120 Ako používať MFC automatizovať Excel a vypĺňať rozsah s poľom
186122 Ako používať MFC automatizovať Excel a získať pole z rozsahu
247412 INFO: Metódy prenosu údajov do programu Excel z programu Visual Basic
XL rozsah mfc

Upozornenie: Tento článok bol preložený automaticky.

Egenskaper

Artikel-id: 308407 – senaste granskning 11/01/2011 05:17:00 – revision: 2.0

Microsoft Visual C++ 2005 Express Edition, Microsoft Visual C++ .NET 2003 Standard Edition, Microsoft Visual C++ .NET 2002 Standard Edition, Microsoft Excel 2002 Standard Edition

  • kbautomation kbhowtomaster kbmt KB308407 KbMtsk
Feedback