mfc创建excel如何另存为_MFC导出excel报表

CString CRunDataForm::ExportAsExcel(CString filename,CListCtrl &resultlist,CWnd * wnd)

{

CDatabase database;

CString sDriver = "Microsoft Excel Driver (*.xls)"; // Excel安装驱动

CString sSql,sExcelFile;

//弹出对话框选择路径

CFileDialog fileDlg (FALSE, "xls", filename,OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, "*.xls",wnd);

if( fileDlg.DoModal()==IDOK)

{

sExcelFile = fileDlg.GetPathName(); // 要建立的Excel文件

CFileFind finder;

BOOL bWorking = finder.FindFile(sExcelFile);//寻找文件

if (bWorking)//如果已经存在文件,则删除

{

CFile::Remove((LPCTSTR)sExcelFile);

}

}

else return("");

TRY

{

CString sTemp;

int i;

// 创建进行存取的字符串

sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s",sDriver, sExcelFile, sExcelFile);

// 创建数据库 (既Excel表格文件)

if( database.OpenEx(sSql,CDatabase::noOdbcDialog) )

{

CHeaderCtrl* pHeader = resultlist.GetHeaderCtrl();

//获得行,列的个数

int nColCount = pHeader->GetItemCount();

int nLineCount = resultlist.GetItemCount();

int ColOrderArray[100];

CString ca[100];

resultlist.GetColumnOrderArray(ColOrderArray, nColCount);

//检索各列的信息,确定列标题的内容

for(int i =0 ; i< nColCount; i++)

{

LVCOLUMN lvc;

char text[100];

lvc.mask = LVCF_TEXT|LVCF_SUBITEM;

lvc.pszText = text;

lvc.cchTextMax = 100;

resultlist.GetColumn(ColOrderArray[i], &lvc);

ca[i] = lvc.pszText;

}

// 创建表结构

CString tempsql="(";

for(i =0 ; i< nColCount-1; i++)

{

tempsql+=ca[i];

tempsql+=" TEXT,";

}

tempsql+=ca[nColCount-1];

tempsql+=" TEXT)";

sSql = "CREATE TABLE Sheet1 ";

sSql+=tempsql;

database.ExecuteSQL(sSql);

//插入数据

int item_count=resultlist.GetItemCount();

tempsql="(";

for(i =0 ; i< nColCount-1; i++)

{

tempsql+=ca[i];

tempsql+=" ,";

}

tempsql+=ca[nColCount-1];

tempsql+=")";

for(int itemnum=0;itemnum

sSql="";

sSql ="INSERT INTO Sheet1 ";

sSql+=tempsql;

sSql+="VALUES ('";

for(i =0 ; i< nColCount-1; i++)

{

sSql+=resultlist.GetItemText(itemnum, i);

sSql+="','";

}

sSql+=resultlist.GetItemText(itemnum, nColCount-1);

sSql+="')";

database.ExecuteSQL(sSql);

}

sSql="";

sSql ="INSERT INTO Sheet1 ";

sSql+=tempsql;

sSql+="VALUES ('";

for(i =0 ; i< nColCount-1; i++)

{

if (i == 0)

{

CString sTemp;

m_stcTJ.GetWindowText(sTemp);

sSql += sTemp;

}else

sSql += "";

sSql+="','";

}

sSql+="";

sSql+="')";

database.ExecuteSQL(sSql);

}

// 关闭数据库

database.Close();

// AfxMessageBox("Excel文件写入成功!");

}

CATCH_ALL(e)

{

TCHAR str[255];

e->GetErrorMessage(str, 255);

//CString sTemp;

//sTemp.Format("Excel驱动没有安装: %s", sDriver);

MessageBox(str);

sExcelFile = "";

}

END_CATCH_ALL;

return sExcelFile;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值