将Control List中的数据导入种Excel的表格中,(使用了.csv文件)

将Control List中的数据导入类Excel的表格中,(使用了.csv文件)

1.将一个图(1)所示的列表中的数据导入一个类Excel的表格中,供医生观看,最终结果用Excel打开,如图(2)

图(1)

将Control List中的数据导入种Excel的表格中,(使用了.csv文件)

图(2)

将Control List中的数据导入种Excel的表格中,(使用了.csv文件)

 

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();
	}
}