16,467
社区成员
发帖
与我相关
我的任务
分享
try
{
if (!m_appExcel.CreateDispatch("Excel.Application",NULL))
{
MessageBox("创建Excel服务失败!","提示",MB_OK|MB_ICONWARNING);
return;
}
m_appExcel.SetVisible(false);
m_wbExcels.AttachDispatch(m_appExcel.GetWorkbooks(),true);
m_wbExcelSingle.AttachDispatch(m_wbExcels.Add(covOptional));
//得到Worksheets
m_wsExcels.AttachDispatch(m_wbExcelSingle.GetWorksheets(),true);
//删除多余的表
m_wsExcelSingle.AttachDispatch(m_wsExcels.GetItem(COleVariant((short)3)));
m_wsExcelSingle.Delete();
m_wsExcelSingle.AttachDispatch(m_wsExcels.GetItem(COleVariant((short)2)));
m_wsExcelSingle.Delete();
//表改名
m_wsExcelSingle.AttachDispatch(m_wsExcels.GetItem(COleVariant((short)1)));
m_wsExcelSingle.SetName("report");
m_rangeExcel.AttachDispatch(m_wsExcelSingle.GetUsedRange(), TRUE);
//Range cols=m_rangeExcel.GetEntireColumn();
//cols.AutoFit();
if (m_Report.m_plist->GetItemCount ()>0)
{
int nItemCount,nColumnCount;
nColumnCount = m_Report.m_plist->GetHeaderCtrl()->GetItemCount();
nItemCount = m_Report.m_plist->GetItemCount();
int i;
LVCOLUMN columnData;
CString columnName;
int columnNum = 0;
CString strH;
CString strV;
columnData.mask = LVCF_TEXT;
columnData.cchTextMax =100;
columnData.pszText = columnName.GetBuffer (100);
//写列表头
for(i=0;m_Report.m_plist->GetColumn(i,&columnData);i++)
{
m_rangeExcel.SetItem(_variant_t((long)(1)), _variant_t((long)(i+1)),COleVariant(columnData.pszText) );
}
columnName.ReleaseBuffer ();
// 向Excel中写数据
for (i = 0; i < nItemCount; i++ )
{
for ( int j = 0; j < nColumnCount; j++ )
{
m_rangeExcel.SetItem( _variant_t( (long)(i+2) ),
_variant_t( (long)(j+1) ),
COleVariant(m_Report.m_plist->GetItemText(i,j)) );
}
}
//Range cols=m_rangeExcel.GetEntireColumn();
Range rgMyRge;
rgMyRge.AttachDispatch(m_wsExcelSingle.GetColumns(),true);
//col.Active();
rgMyRge.AutoFit();
m_wbExcelSingle.SaveAs(COleVariant(filePath),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
0,
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing));
}
else
{
//没有数据
MessageBox("没有数据,不能导出!","提示",MB_OK|MB_ICONWARNING|MB_TOPMOST);
return;
}
m_wbExcelSingle.Close( covOptional, COleVariant(filePath), covOptional );
m_wbExcels.Close();
m_rangeExcel.ReleaseDispatch();
m_wsExcelSingle.ReleaseDispatch();
m_wsExcels.ReleaseDispatch();
m_wbExcelSingle.ReleaseDispatch();
m_wbExcels.ReleaseDispatch();
m_appExcel.ReleaseDispatch();
m_appExcel.Quit();
MessageBox("导出成功!","提示");
}catch(...)
{
m_wbExcelSingle.Close( covOptional, COleVariant(filePath), covOptional );
m_wbExcels.Close();
m_rangeExcel.ReleaseDispatch();
m_wsExcelSingle.ReleaseDispatch();
m_wsExcels.ReleaseDispatch();
m_wbExcelSingle.ReleaseDispatch();
m_wbExcels.ReleaseDispatch();
m_appExcel.ReleaseDispatch();
m_appExcel.Quit();
MessageBox("导出失败!","提示");
}