导出excel:导出列表控件内容项到Excel文件的方法



网络上用于导出Excel思路方法很多不过有类在使用过程中间经常出现莫名其妙Link这里重新封装了能够方便使用了详细内容可以参考
使用思路方法:新建基于对话框然后加入列表Control控件化数据
m_List.DeleteAllItems;
//设置listControl控件文字和背景颜色
m_List.SetBkColor(RGB(255,255,255));
m_List.SetTextBkColor(RGB(255,255,255));

//清空listControl控件数据
for(delcolumn=100;delcolumn>=0;delcolumn--)
m_List.DeleteColumn(delcolumn);
//设置list对话框
DWORDdwStyle;
RECTrect;
LV_COLUMNlvc;

dwStyle=m_List.GetStyle;
dwStyle|=LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_SHOWSELALWAYS|LVS_EDITLABELS;

m_List.SetExtendedStyle(dwStyle);
m_List.GetClientRect(&rect);

lvc.mask=LVCF_TEXT|LVCF_SUBITEM|LVCF_WIDTH|LVCF_FMT;
lvc.fmt=LVCFMT_CENTER;

lvc.iSubItem=0;
lvc.pszText=_T(\"编号\");
lvc.cx=70;
m_List.InsertColumn(1,&lvc);

lvc.iSubItem=1;
lvc.pszText=_T(\"姓名\");
lvc.cx=100;
m_List.InsertColumn(2,&lvc);

lvc.iSubItem=2;
lvc.pszText=_T(\"住址\");
lvc.cx=100;
m_List.InsertColumn(3,&lvc);

lvc.iSubItem=3;
lvc.pszText=_T(\"测试列\");
lvc.cx=100;
m_List.InsertColumn(4,&lvc);

lvc.iSubItem=4;
lvc.pszText=_T(\"测试列 2\");
lvc.cx=100;
m_List.InsertColumn(5,&lvc);

charstrMsg[100];
mem(strMsg,0,(strMsg));

//加入数据
for(i=0;i<20;i)
{
sprf(strMsg,\"编号%.2d\",i);
m_List.InsertItem(i,strMsg);
sprf(strMsg,\"姓名%.2d\",i);
m_List.SetItemText(i,1,strMsg);
sprf(strMsg,\"住址%.2d\",i);
m_List.SetItemText(i,2,strMsg);
sprf(strMsg,\"测试列%.2d\",i);
m_List.SetItemText(i,3,strMsg);
sprf(strMsg,\"测试列 2%.2d\",i);
m_List.SetItemText(i,4,strMsg); [Page]
}

然后就是封装导出列表Control控件内容到Excel这里可以根据ListCtrl信息自动导出
voidCTestExportToExcelDlg::OnExportttoexcel
{
CFileDialogmFileDlg(FALSE,NULL,NULL,OFN_ALLOWMULTISELECT,
_T(\"Excel文件(*.xls)|*.xls||\"),this);
(mFileDlg.DoModalIDOK)
{
CStringstrPathName,strFileName;
strPathName=mFileDlg.GetPathName;
strFileName=mFileDlg.GetFileName;
(strFileName.Find(’.’)-1)
{
strPathName\".xls\";
}



{
(strFileName.Right(4)!=\".xls\"&&strFileName.Right(4)!=\".XLS\")
{
MessageBox(\"保存文件格式后缀名应该为“.xls”!\",\"信息\",MB_OK|MB_ICONERROR);
;
}
}

//删除替换表格内容这里防止替换文件处理思路方法
CFileFindfFind;
(fFind.FindFile(strPathName))
{
(MessageBox(strFileName+\"文件已经存在是否替换原文件?\",\"提示信息\",MB_OKCANCEL|MB_ICONQUESTION)IDCANCEL)
{
;
}
DeleteFile(strFileName);
}

//写入EXCEL表格内容
BeginWaitCursor;
CExcelCtrlSS(strPathName,\"导出查询表格信息\");

CStringArraysampleArray;
SS.BeginTransaction;

//加入标题
sampleArray.RemoveAll;
for(i=0;i<m_List.GetHeaderCtrl->GetItemCount;i)
{ [Page]
HDITEMhdi;
charlpBuffer[256];
hdi.mask=HDI_TEXT;
hdi.pszText=lpBuffer;
hdi.cchTextMax=256;

m_List.GetHeaderCtrl->GetItem(i,&hdi);
sampleArray.Add(hdi.pszText);
}
SS.AddHeaders(sampleArray);

//加入数据
for(i=0;i<m_List.GetItemCount;i)
{
sampleArray.RemoveAll;
for(j=0;j<m_List.GetHeaderCtrl->GetItemCount;j)
{
sampleArray.Add(m_List.GetItemText(i,j));
}
SS.AddRow(sampleArray);
}
SS.Commit;
AfxMessageBox(\"数据保存成功保存文件为:\"+strPathName);
EndWaitCursor;
}
}

运行效果:
\"Example

导出Excel文件效果:
\"Excel
Tags:  asp导出excel asp.net导出excel excel控件 导出excel

延伸阅读

最新评论

发表评论