?? report2dlg.cpp
字號:
// Report2Dlg.cpp : implementation file
//
#include "stdafx.h"
#include "AssetsMan.h"
#include "Report2Dlg.h"
#include "Excel9.h"
#include "COMDEF.H"
#include "_recordset.h"
#include "columns.h"
#include "column.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CReport2Dlg dialog
CReport2Dlg::CReport2Dlg(CWnd* pParent /*=NULL*/)
: CDialog(CReport2Dlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CReport2Dlg)
//}}AFX_DATA_INIT
}
void CReport2Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CReport2Dlg)
DDX_Control(pDX, IDC_ADODC1, m_adodc);
DDX_Control(pDX, IDC_DATAGRID1, m_DataGrid);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CReport2Dlg, CDialog)
//{{AFX_MSG_MAP(CReport2Dlg)
ON_BN_CLICKED(IDC_PRINT_BUTTON, OnPrintButton)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CReport2Dlg message handlers
BOOL CReport2Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
CString cSource;
cSource = "SELECT TypeName AS 類別名稱, CountAid AS 固定資產(chǎn)數(shù)量,";
cSource += " SumOrgPrice AS 總價(jià)值, SumLastPrice AS 當(dāng)前價(jià)值, SumDisPrice AS 已折舊價(jià)值";
cSource += " FROM v_Report2";
//設(shè)置數(shù)據(jù)源
m_adodc.SetRecordSource(cSource);
m_adodc.Refresh();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CReport2Dlg::OnPrintButton()
{
//定義操作Excel必要的對象
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
COleVariant covTrue((short)TRUE), covFalse((short)FALSE);
_Application objApp;
Workbooks objBooks;
_Workbook objBook;
Worksheets objSheets;
_Worksheet objSheet;
Range objRange;
//創(chuàng)建Excel對象
objApp.CreateDispatch("Excel.Application");
objBooks=objApp.GetWorkbooks(); //返回工作簿對象
// 打開指定Excel文件
objBook.AttachDispatch(objBooks.Add(_variant_t("C:\\Report2.xls")));
objSheets=objBook.GetSheets();
// 定義第一個(gè)Sheet為對象
objSheet=objSheets.GetItem((_variant_t)short(1));
objRange.AttachDispatch(objSheet.GetCells(),true);
// 取得結(jié)果集中記錄個(gè)數(shù),列數(shù)
int ss,nn;
double dTotal;
dTotal = 0;
CString cc;
// 得到結(jié)果集中記錄個(gè)數(shù)
nn = m_adodc.GetRecordset().GetRecordCount();
// 定義列對象并取得列的個(gè)數(shù)
CColumns cls;
cls = m_DataGrid.GetColumns();
ss = cls.GetCount();
// 雙層循環(huán)取得所有數(shù)據(jù)放入Excel表中
for(int i=0;i<nn;i++)
{
// 設(shè)定數(shù)據(jù)所在行
m_DataGrid.SetRow(i);
for(int j=0;j<ss;j++)
{
// 設(shè)定數(shù)據(jù)所在列
m_DataGrid.SetCol(j);
// 取得指定列的值
cc = m_DataGrid.GetText();
// 計(jì)算原值
if(j==9)
dTotal = dTotal + atoi(cc);
// 把列值放入Excel指定單元格
objRange.SetItem(_variant_t((long)(i+2)),_variant_t((long)(j+1)),_variant_t(cc));
}
}
// 設(shè)置Excel為不可見
objApp.SetVisible(false);
objBook.PrintOut(covOptional,covOptional,COleVariant(long(1)),
covFalse,covOptional,covOptional,covOptional,covOptional);
// 釋放句柄
objRange.ReleaseDispatch();
objSheet.ReleaseDispatch();
objSheets.ReleaseDispatch();
objBook.ReleaseDispatch();
objBooks.ReleaseDispatch();
objApp.ReleaseDispatch();
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -