Explorar o código

完成导出功能。

JeffWang %!s(int64=2) %!d(string=hai) anos
pai
achega
e369a17433

+ 21 - 0
Source/OGCAssistTool/OGCAssistTool/Global.cpp

@@ -1435,30 +1435,51 @@ end:
 	{
 		if (wcs)
 		{
+			// 格式化前设置语言区域;
+			TString old_locale;
+			TCHAR *pLocalName = _tsetlocale(LC_CTYPE, NULL);
+			if (pLocalName != NULL)
+				old_locale = pLocalName;
+			else
+				old_locale = _T("C");
+			_tsetlocale(LC_CTYPE, _T("chs"));//设定中文;
+
+#define LC_FREE _tsetlocale(LC_CTYPE, old_locale.c_str()); 
+
 			// 计算待转换的字节数
 			size_t count = wcstombs(NULL, wcs, 0);
+			if (count == -1)
+			{// 转换失败,count=-1;
+				LC_FREE;
+				return std::string();
+			}
+
 			if (count <= K1) // 1k;
 			{
 				char szValue[K1] = { 0 };
 				wcstombs(szValue, wcs, count);
+				LC_FREE;
 				return std::string(szValue);
 			}
 			else if (count <= K2) // 2k;
 			{
 				char szValue[K2] = { 0 };
 				wcstombs(szValue, wcs, count);
+				LC_FREE;
 				return std::string(szValue);
 			}
 			else if (count <= K4)	// 4k;
 			{
 				char szValue[K4] = { 0 };
 				wcstombs(szValue, wcs, count);
+				LC_FREE;
 				return std::string(szValue);
 			}
 			else if (count <= K8)	// 8k;
 			{
 				char szValue[K8] = { 0 };
 				wcstombs(szValue, wcs, count);
+				LC_FREE;
 				return std::string(szValue);
 			}
 		}

+ 38 - 2
Source/OGCAssistTool/OGCAssistTool/PageLog.cpp

@@ -262,10 +262,46 @@ void CPageLog::OnBnClickedExport()
 		return;
 	}
 
-	CString strHeader = _T("批次号,SN,调试开始,调试耗时,调试结束,调试结果,DeltaE结果值,Delta标准值");
+	// 选择要导出的文件路径;
+	CString strFilePath;
+	CFileDialog fileDlg(false, _T("txt"), _T("调试记录"), OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST, _T("文件(*.csv)|*.csv|所有文件(*.*) |*.*||"));
+	if (fileDlg.DoModal() != IDOK)
+		return;
+	
+	strFilePath = fileDlg.GetPathName();	
+
+	CStringArray strArray;
+	CString strCol = _T("批次号,SN,调试开始,调试结束,调试耗时,调试结果,▲E实际值,▲E标准值\n");
+	strArray.Add(strCol);
 	INT nCount = m_ctrlList.m_AryList.GetCount();
 	for ( int i = 0; i < nCount; i++ )
 	{
-		m_ctrlList.m_AryList.ElementAt(i);
+		strCol.Format(_T("%s,%s,%s,%s,%s,%s,%s,%s\n"), 
+			m_ctrlList.m_AryList.ElementAt(i).ElementAt(0).GetString(),
+			m_ctrlList.m_AryList.ElementAt(i).ElementAt(1).GetString(),
+			m_ctrlList.m_AryList.ElementAt(i).ElementAt(2).GetString(),
+			m_ctrlList.m_AryList.ElementAt(i).ElementAt(3).GetString(),
+			m_ctrlList.m_AryList.ElementAt(i).ElementAt(4).GetString(),
+			m_ctrlList.m_AryList.ElementAt(i).ElementAt(5).GetString(),
+			m_ctrlList.m_AryList.ElementAt(i).ElementAt(6).GetString(),
+			m_ctrlList.m_AryList.ElementAt(i).ElementAt(7).GetString());
+
+		strArray.Add(strCol);
+	}
+
+	// 写入文件;
+	FILE* fp = NULL;
+	std::string fileName = GLOBAL::wcs2mbs(strFilePath.GetString());
+	if (NULL != (fp=fopen(fileName.c_str(), "wb")))
+	{
+		nCount = strArray.GetCount();
+		for (int i = 0; i < nCount; i++)
+		{
+			strCol = strArray.ElementAt(i);
+			std::string val = GLOBAL::wcs2mbs(strCol.GetString());
+			fwrite(val.c_str(), val.size(), 1, fp);
+		}
+
+		fclose(fp);
 	}
 }

+ 44 - 0
Source/OGCAssistTool/OGCAssistTool/PageStatistics.cpp

@@ -234,4 +234,48 @@ void CPageStatistics::OnBnClickedExport()
 		MessageBox(_T("无数据可导出!"), _T("提示"), MB_ICONWARNING);
 		return;
 	}
+
+	// 选择要导出的文件路径;
+	CString strFilePath;
+	CFileDialog fileDlg(false, _T("txt"), _T("统计结果"), OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST, _T("文件(*.csv)|*.csv|所有文件(*.*) |*.*||"));
+	if (fileDlg.DoModal() != IDOK)
+		return;
+
+	strFilePath = fileDlg.GetPathName();
+
+	CStringArray strArray;
+	CString strCol = _T("创建时间,批次号,模式,SN数量,成功数量,成功率,平均耗时,总耗时,▲E标准值\n");
+	strArray.Add(strCol);
+	INT nCount = m_ctrlList.m_AryList.GetCount();
+	for (int i = 0; i < nCount; i++)
+	{
+		strCol.Format(_T("%s,%s,%s,%s,%s,%s,%s,%s,%s\n"),
+			m_ctrlList.m_AryList.ElementAt(i).ElementAt(0).GetString(),
+			m_ctrlList.m_AryList.ElementAt(i).ElementAt(1).GetString(),
+			m_ctrlList.m_AryList.ElementAt(i).ElementAt(2).GetString(),
+			m_ctrlList.m_AryList.ElementAt(i).ElementAt(3).GetString(),
+			m_ctrlList.m_AryList.ElementAt(i).ElementAt(4).GetString(),
+			m_ctrlList.m_AryList.ElementAt(i).ElementAt(5).GetString(),
+			m_ctrlList.m_AryList.ElementAt(i).ElementAt(6).GetString(),
+			m_ctrlList.m_AryList.ElementAt(i).ElementAt(7).GetString(),
+			m_ctrlList.m_AryList.ElementAt(i).ElementAt(8).GetString());
+
+		strArray.Add(strCol);
+	}
+
+	// 写入文件;
+	FILE* fp = NULL;
+	std::string fileName = GLOBAL::wcs2mbs(strFilePath.GetString());
+	if (NULL != (fp = fopen(fileName.c_str(), "wb")))
+	{
+		nCount = strArray.GetCount();
+		for (int i = 0; i < nCount; i++)
+		{
+			strCol = strArray.ElementAt(i);
+			std::string val = GLOBAL::wcs2mbs(strCol.GetString());
+			fwrite(val.c_str(), val.size(), 1, fp);
+		}
+
+		fclose(fp);
+	}
 }