将Control List中的数据导入种Excel的表格中,(使用了.csv文件)
将Control List中的数据导入类Excel的表格中,(使用了.csv文件)
1.将一个图(1)所示的列表中的数据导入一个类Excel的表格中,供医生观看,最终结果用Excel打开,如图(2)
图(1)
图(2)
2.解决思路
(1)如果用vc将列表中的数据导入Excel的话,需要用ADO连接Excel,并且将数据写入Excle中,比较麻烦。
(2).csv格式的文件是一种比较特殊的文件,是将字符串用逗号‘,’分隔的一种文件,可以用文本文件打开,也可以用Excel的方式打开。
(3)可以利用.csv文件的特点将每一列用逗号‘,’分隔,达到表格的效果。
(4).csv文件的写入和VC最常使用的文本文件与二进制文件的写入方式是一样的,所以可以用写文件的方式写.csv文件
(5)利用了MFC的CFile类
3.代码分析
void CStatisticDlg::OnBnClickedBtnSaveTotalnum() { // TODO: Add your control notification handler code here //CADODatabase* pDbConn = new CADODatabase(); //CString strConn; //strConn = _T("Provider=Microsoft.Ace.OleDb.12.0;Data Source=d:\\wc.xls;Extended Properties='Excel 12.0;HDR=NO'"); ////Provider=Microsoft.Jet.OLEDB.4.0; Excel 12.0; for excel 2003 //if(!pDbConn->Open(strConn)) //{ // MessageBox(_T("连接Excel表格失败!"),_T("失败")); // return; //} if (m_TotalNumList.GetItemCount() > 0) { CString strFileName = _T("胶片总数.csv"); CFile file; if (!file.Open(strFileName,CFile::modeCreate | CFile::modeWrite)) { MessageBox(_T("文件此时不能打开"),_T("提示")); return; } CString strHead = _T("工作站名,总数,8INX10IN,14INX17IN,10INX12IN,10INX14IN,11INX14IN,11INX17IN,14INX14IN,8_5INX11IN,24CMX24CM,24CMX30CM,A4,A3\r\n"); file.Write(strHead,strHead.GetLength()); for (int nItem=0;nItem<m_TotalNumList.GetItemCount();nItem++) { CString strData; for (int i=0;i<14;i++) { strData += m_TotalNumList.GetItemText(nItem,i); if (13 == i) { strData += _T("\r\n"); } else { strData += _T(","); } } file.Write(strData,strData.GetLength()); } file.Close(); } }