📄 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 固定资产数量,";
cSource += " SumOrgPrice AS 总价值, SumLastPrice AS 当前价值, SumDisPrice AS 已折旧价值";
cSource += " FROM v_Report2";
//设置数据源
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;
//创建Excel对象
objApp.CreateDispatch("Excel.Application");
objBooks=objApp.GetWorkbooks(); //返回工作簿对象
// 打开指定Excel文件
objBook.AttachDispatch(objBooks.Add(_variant_t("C:\\Report2.xls")));
objSheets=objBook.GetSheets();
// 定义第一个Sheet为对象
objSheet=objSheets.GetItem((_variant_t)short(1));
objRange.AttachDispatch(objSheet.GetCells(),true);
// 取得结果集中记录个数,列数
int ss,nn;
double dTotal;
dTotal = 0;
CString cc;
// 得到结果集中记录个数
nn = m_adodc.GetRecordset().GetRecordCount();
// 定义列对象并取得列的个数
CColumns cls;
cls = m_DataGrid.GetColumns();
ss = cls.GetCount();
// 双层循环取得所有数据放入Excel表中
for(int i=0;i<nn;i++)
{
// 设定数据所在行
m_DataGrid.SetRow(i);
for(int j=0;j<ss;j++)
{
// 设定数据所在列
m_DataGrid.SetCol(j);
// 取得指定列的值
cc = m_DataGrid.GetText();
// 计算原值
if(j==9)
dTotal = dTotal + atoi(cc);
// 把列值放入Excel指定单元格
objRange.SetItem(_variant_t((long)(i+2)),_variant_t((long)(j+1)),_variant_t(cc));
}
}
// 设置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();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -