MFC中如何利用Excel ChartWizard生成图表?(在线等)

risley 2006-07-26 05:47:36
一下使我写的代码
其中,chartPtr->ChartWizard(source, Gallery, Format, PlotBy, CategoryLabels,
SeriesLabels, HasLegend, Title, CategoryTitle, ValueTitle, ExtraTitle, lcid);
参数source有问题,我不知道怎么把source数据传给ChartWizard,
那位高手指点一下,小弟这里感激不尽。
**********************************************************************

HRESULT
Excel2003Report::createReport()
{
try
{
// create an Excel2003 application
HRESULT hr = m_pExcelApp.CreateInstance(__uuidof(Excel2003::Application));
if (hr != S_OK) return hr;

m_pExcelApp->SheetsInNewWorkbook[0] = 1;

// get workbooks
Excel2003::WorkbooksPtr pWorkbooks;
pWorkbooks = m_pExcelApp->GetWorkbooks();
m_pWorkbook = pWorkbooks->Add();

// get the worksheet and cells
m_pWorksheet = m_pWorkbook->GetActiveSheet();
if (m_pWorksheet == NULL)
{
return E_FAIL;
}

// try to activate the sheet
hr = m_pWorksheet->Activate();

// DEBUG

// get the cells
m_pSheetRange = m_pWorksheet->GetCells();
if (m_pSheetRange == NULL)
{
return E_FAIL;
}
m_pActiveRange = m_pWorksheet->GetRange("A1","A1");
if (m_pActiveRange == NULL)
{
return E_FAIL;
}
// get the pictures
m_pPictures = m_pWorksheet->Pictures();
}
catch(...)
{}

return S_OK;
}


void
Excel2003Report::saveAs( const _bstr_t & name )
{
if ("" == name)
return;//through exception
try
{
m_pWorkbook->SaveAs( name, // file name
(long)Excel2003::xlNormal, // file format
_bstr_t(""), // password
_bstr_t(""), // write res password
false, // readonly recommended
false, // create backup
Excel2003::xlNoChange, // xlExclusive access mode
(long)Excel2003::xlUserResolution ); // conflict resolution
}
catch(...)
{}
}

HRESULT
Excel2003Report::generateChart(double xPos, double yPos, double width, double height)
{
HRESULT hr = S_OK;
//set value
_variant_t cellData = 1;
m_pActiveRange = m_pWorksheet ->GetRange("A1","D1");
setCellData(cellData);
//get range value
m_pSheetRange = m_pActiveRange;
if (NULL == m_pSheetRange)
return E_FAIL;
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
LPDISPATCH lpDisp;

//Create a ChartObject Collection for the Worksheet
Excel2003::ChartObjectsPtr chartObjsPtr = m_pWorksheet->ChartObjects();
Excel2003::ChartObjectPtr chartObjPtr = chartObjsPtr->Add(xPos, yPos, width, height);
Excel2003::_ChartPtr chartPtr = chartObjPtr->GetChart();

_variant_t source ;
source.vt = VT_DISPATCH;
source.pdispVal = m_pSheetRange;

_variant_t Gallery = XlChartType::xlPie;
_variant_t Format =1;
_variant_t PlotBy = XlRowCol::xlRows;
_variant_t CategoryLabels = 0;
_variant_t SeriesLabels = 1;
_variant_t HasLegend = true;
_variant_t Title = "title";
_variant_t CategoryTitle = "CategoryTitle";
_variant_t ValueTitle = "ValueTitle";
_variant_t ExtraTitle = "ExtraTitle";
long lcid = 0;

chartPtr->ChartWizard(source, Gallery, Format, PlotBy, CategoryLabels,
SeriesLabels, HasLegend, Title, CategoryTitle, ValueTitle, ExtraTitle, lcid);

return hr;
}

void
Excel2003Report::setCellData(_variant_t data)
{
m_pActiveRange->PutValue2( data );
// autofit the column size
Excel2003::RangePtr pColumnRange = m_pActiveRange->GetEntireColumn();
pColumnRange->AutoFit();
}
...全文
766 4 打赏 收藏 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
risley 2006-07-27
  • 打赏
  • 举报
回复
这些适合以前的版本,在VC6.0中可以用,在.net2005中不能用了
lixiaosan 2006-07-27
  • 打赏
  • 举报
回复
http://support.microsoft.com/kb/178783/en-us
risley 2006-07-26
  • 打赏
  • 举报
回复
我只要C++的例子。VB的不要。我用的是.net2005 and Excel 2003 Automaiton API
Elysium 2006-07-26
  • 打赏
  • 举报
回复
http://msdn2.microsoft.com/en-us/library/microsoft.office.interop.excel._chart.chartwizard.aspx

vb中调用excel2000例子:
http://www.it.com.cn/f/edu/0410/26/39816.htm

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧