| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1631 人关注过本帖
标题:如何将clistview内容导出到excel
只看楼主 加入收藏
lirui_1212
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-9-10
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
如何将clistview内容导出到excel
如何将clistview内容导出到excel?
为何调用ExportListToExcel函数,提示参数类型不匹配?请懂的朋友给予解答,谢谢!

void CBeiView::OnButton1()                   //单击“导出到excel”按钮
{
    CListCtrl &ctl=GetListCtrl();
    ExportListToExcel(ctl,"库存明细");      //调用全局函数,导出数据到excel
}
//全局函数
void ExportListToExcel(CListCtrl* pList, CString strTitle)
{
    CString warningStr;
    if (pList->GetItemCount ()>0) {   
        CDatabase database;
        CString sDriver;
        CString sExcelFile;
        CString sSql;
        CString tableName = strTitle;     
        // 检索是否安装有Excel驱动 "Microsoft Excel Driver (*.xls)"
        sDriver = GetExcelDriver();
        if (sDriver.IsEmpty())
        {
            // 没有发现Excel驱动
            AfxMessageBox("没有安装Excel!\n请先安装Excel软件才能使用导出功能!");
            return;
        }      
        ///默认文件名
        if (!GetDefaultXlsFileName(sExcelFile))
            return;        
        // 创建进行存取的字符串
        sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s",sDriver, sExcelFile, sExcelFile);     
        // 创建数据库 (既Excel表格文件)
        if( database.OpenEx(sSql,CDatabase::noOdbcDialog) )
        {
            // 创建表结构
            int i;
            LVCOLUMN columnData;
            CString columnName;
            int columnNum = 0;
            CString strH;
            CString strV;
            sSql = "";
            strH = "";
            columnData.mask = LVCF_TEXT;
            columnData.cchTextMax =100;
            columnData.pszText = columnName.GetBuffer (100);
            for(i=0;pList->GetColumn(i,&columnData);i++)
            {
                if (i!=0)
                {
                    sSql = sSql + ", " ;
                    strH = strH + ", " ;
                }
                sSql = sSql + " " + columnData.pszText +" TEXT";
                strH = strH + " " + columnData.pszText +" ";
            }
            columnName.ReleaseBuffer ();
            columnNum = i;
            sSql = "CREATE TABLE " + tableName + " ( " + sSql +  " ) ";
            database.ExecuteSQL(sSql);
            // 插入数据项
            int nItemIndex;
            for (nItemIndex=0;nItemIndex<pList->GetItemCount ();nItemIndex++){
                strV = "";
                for(i=0;i<columnNum;i++)
                {
                    if (i!=0)
                    {
                        strV = strV + ", " ;
                    }
                    strV = strV + " '" + pList->GetItemText(nItemIndex,i) +"' ";
                }               
                sSql = "INSERT INTO "+ tableName
                    +" ("+ strH + ")"
                    +" VALUES("+ strV + ")";
                database.ExecuteSQL(sSql);
            }        
        }              
        // 关闭数据库
        database.Close();            
        warningStr.Format("导出数据成功\n保存在%s文件中.",sExcelFile);
        AfxMessageBox(warningStr);
    }
}
搜索更多相关主题的帖子: database excel void 如何 
2012-09-10 14:02
眼底星空
Rank: 4
等 级:业余侠客
威 望:3
帖 子:85
专家分:289
注 册:2006-9-2
收藏
得分:0 
ExportListToExcel(&ctl,"库存明细");

无为而为 && 每天进步一小点...
2012-09-10 17:47
lirui_1212
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-9-10
收藏
得分:0 
回复 2楼 眼底星空
还是不行,可以正常编译,但执行后会出现出错信息:字段定义语法错误。
2012-09-11 08:03
眼底星空
Rank: 4
等 级:业余侠客
威 望:3
帖 子:85
专家分:289
注 册:2006-9-2
收藏
得分:20 
回复 3楼 lirui_1212
是在create table执行的时候报错吧? 怀疑ListCtrl列名里含特殊字符, 比如括号,斜杠。。导致语法错误。

无为而为 && 每天进步一小点...
2012-09-11 09:00
眼底星空
Rank: 4
等 级:业余侠客
威 望:3
帖 子:85
专家分:289
注 册:2006-9-2
收藏
得分:0 
以下是引用眼底星空在2012-9-11 09:00:41的发言:

是在create table执行的时候报错吧? 怀疑ListCtrl列名里含特殊字符, 比如括号,斜杠。。导致语法错误。
    如果是这个问题,可以把列名加上[]试试。
    形如: CREATE TABLE test( [col/1] TEXT, [col/2] TEXT, [col(3)] TEXT )

无为而为 && 每天进步一小点...
2012-09-11 09:12
快速回复:如何将clistview内容导出到excel
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013109 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved