Exporter le contenu de la zone de liste dans MFC sous forme de données, prendre en charge les formats Excel et Txt

Exporter le contenu de la zone de liste dans MFC sous forme de données, prendre en charge les formats Excel et Txt

Ce code prend en charge l'exportation dans Excel et Txt, et le nom personnalisé est la date et l'heure actuelles lors de l'exportation, qui peuvent être modifiées

void CHMList::OnBnClickedButtondataout()
{
    
    
	// TODO: 在此添加控件通知处理程序代码
	CTime m_time;
	m_time=CTime::GetCurrentTime();//获取系统当前时间
	CString m_strDateTime;//系统时间
	m_strDateTime=m_time.Format("%Y.%m.%d");//系统时间格式化,以年月日方式
	if (m_list.GetItemCount() <= 0)   
	{
    
    
		AfxMessageBox(_T("列表中没有数据,无法导出"));
		return;
	}
	char szFilters[] = _T("xlsx文件(*.xlsx)|*.xlsx|txt文件(*.txt)|*.txt|所有文件(*.*)|*.*||");
	CFileDialog dlg(FALSE, _T("xlsx"),m_strDateTime, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilters, this);
	if (dlg.DoModal() != IDOK)
		return;
	CString strFilePath;
	strFilePath = dlg.GetPathName();//获得文件路径名
	DWORD dwRe = GetFileAttributes(strFilePath);
	if (dwRe != (DWORD)-1)
	{
    
    
		DeleteFile(strFilePath);
	}
	//保存文件数据
	FILE*fp;
	fopen_s(&fp, strFilePath, "w");
	//	char str[1024];
	if (fp == NULL)
	{
    
    
		printf("save file error\n");
		return;
	}
	//得到listctrl的所有列的header字符串内容
	int nHeadNum = m_list.GetHeaderCtrl()->GetItemCount();
	LVCOLUMN lvcol;
	char str_out[256];
	int nColNum;
	nColNum = 0;
	lvcol.mask = LVCF_TEXT;
	lvcol.pszText = str_out;
	lvcol.cchTextMax = 256;
	while (m_list.GetColumn(nColNum, &lvcol))
	{
    
    
		nColNum++;
		fprintf_s(fp, "%s\t", lvcol.pszText);
	}
	fprintf_s(fp, "\n", lvcol.pszText);

	//读取listctrl数据

	int nRow = m_list.GetItemCount();
	for (int i = 0; i < nRow; i++)
	{
    
           
		for(int j=0;j<nColNum;j++)

		{
    
    
			CString str_data = m_list.GetItemText(i,j);//获取指定列
			fprintf_s(fp, "%s\t", str_data);  // \t为水平制表符
		}
		fprintf_s(fp, "\n");
	}
	fclose(fp);
	AfxMessageBox("文件已生成!");
}

L'effet est montré dans la figure:
Insérez la description de l'image ici
Cette méthode de sauvegarde est- elle géniale? C'est la même chose que d'utiliser directement l'ordinateur pour fonctionner sur l'ordinateur

Je suppose que tu aimes

Origine blog.csdn.net/weiwei_lol/article/details/109271959
conseillé
Classement