Спасибо всем за помощь!
С Вордом вроде получилось! только вот таблицу нарисавть не получается!!!
Я нашел в MSDN класс работы с вордом — msword8 и экселем — excel8!!!
Но не нашел описание этого класса может кто подскажит как используя excel8 для рисования таблиц и запуска макроса!??
Пример подключения и загрузки данных с лист контрола в EXCEL:
#include "excel8.h"
// For optional arguments
COleVariant vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
// Instantiate Excel
_Application oApp;
oApp.CreateDispatch("Excel.Application");
if (!oApp)
{
AfxMessageBox("Cannot start Excel.");
return;
}
//Get the Workbooks collection so that you can add a new
//workbook
Workbooks oBooks = oApp.GetWorkbooks();
_Workbook oBook = oBooks.Add(vOpt);
//Get the Worksheets collection of the new Workbook so that
//you can get the IDispatch for the first WorkSheet
Worksheets oSheets = oBook.GetWorksheets();
_Worksheet oSheet = oSheets.GetItem(COleVariant((short)1));
//*** ADD DATA TO THE WORKSHEET
CString csAlphabet = "A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1";
CStringArray Alphabet;
Alphabet.SetSize(26,1);
UINT j = 0,
z = 0;
while(j != 26)
{
CString a;
a = csAlphabet.Mid(z, 2);
Alphabet.SetAt(j,_T(a));
z += 2;
j++;
}
//Add Headers to Row 1 of the worksheet
Range oRange;
int nItemCount = m_report.GetItemCount();
int nColumnCount = m_report.GetHeaderCtrl()->GetItemCount();
for (int i=0;i < nColumnCount;i++)
{
char szTitle[255];
CString pszColTitleTable,
colAlphabet;
LVCOLUMN col;
col.mask = LVCF_WIDTH | LVCF_TEXT | LVCF_FMT;
col.cchTextMax = sizeof(szTitle);
col.pszText = szTitle;
if (!m_report.SendMessage(LVM_GETCOLUMN, (WPARAM)(int)i, (LPARAM)(LPLVCOLUMN)&col)) continue;
pszColTitleTable = col.pszText;
colAlphabet = Alphabet.GetAt(i);
oRange = oSheet.GetRange(COleVariant(colAlphabet), vOpt);
oRange.SetValue(COleVariant(pszColTitleTable));
}
//Create a safe array that is nItemCount x nColumnCount --
COleSafeArray sa;
DWORD dwElements[2];
dwElements[0]= nItemCount; //Number of rows
dwElements[1]= nColumnCount; //Number of columns
sa.Create(VT_VARIANT, 2, dwElements);
//Populate the safe array with the data
long index[2];
long lRow;
COleVariant vTemp;
CString s;
for(lRow=0;lRow<nItemCount;lRow++)
{
index[0] = lRow;
int nCol;
for(nCol = 0; nCol < nColumnCount; nCol++)
{
index[1] = nCol;
s = m_report.GetItemText(lRow,nCol);
vTemp = s;
sa.PutElement(index, vTemp);
}
}
//Fill a range, starting at A2 with the data in
//the safe array
oRange = oSheet.GetRange(COleVariant("A2"), vOpt);
oRange = oRange.GetResize(COleVariant((short)nItemCount),COleVariant((short)nColumnCount));
oRange.SetValue(sa);
sa.Detach();
//*** ADD FORMULAS TO THE WORKSHEET
//Fill the fourth column with a formula to compute the
//sales tax. Note that the formula uses a "relative"
//cell reference so that it fills properly.
//*** FORMAT THE WORKSHEET
oRange = oSheet.GetRange(COleVariant("A1"), COleVariant("Z1"));
Font oFont = oRange.GetFont();
oFont.SetBold(COleVariant((short)TRUE));//Apply Bold to Headers
oRange = oRange.GetEntireColumn();
oRange.AutoFit(); //AutoFit the columns 1:4
//Make Excel visible and give the user contro
oApp.SetVisible(TRUE);
oApp.SetUserControl(TRUE);