当我从Excel中保存我的清单控制数据。但是,当我按打开按钮。
我不能打开我保存的文件。
PLZ检查我的代码,并给予建议。谢谢(^ _ ^ _)
我的问题的一部分,这是
CXLEzAutomation XL(false);
//Get file name for opening Excel file
CString szFileName = DataRead.GetPathName();
strThisPath.Format("%s\\%s.xls",save_path,szFileName);
if(!SetCurrentDirectory(strThisPath))
{
if(szFileName.IsEmpty())
return;
//Close Excel if failed to open file
if(!XL.OpenExcelFile(szFileName))
{
m_cList.DeleteAllItems();
CString address, field, value;
for(int i=1; ; i++)
{
address=XL.GetCellValue(1,i+1);
field=XL.GetCellValue(2,i+1);
value=XL.GetCellValue(3,i+1);
if ( address == "")
break;
m_cList.InsertItem(i-1,address);
m_cList.SetItemText(i-1,1,field);
m_cList.SetItemText(i-1,2,value);
}
void CFormThird::OnXlSave()
{
//BOOL bRead;
int mrowNum, mcolNum;
int rowNum = 1;
int colNum = 1;
char temp [10];
CString m_SFileName;
CXLEzAutomation XL(FALSE);
m_SFileName ="MODBUS DATA FILE";
//?? ???
XL.SetCellValue(colNum++, 1, "Address");
XL.SetCellValue(colNum++, 1, "Field");
XL.SetCellValue(colNum++, 1, "Value");
rowNum= m_cList.GetItemCount();
// colNum = m_cList.GetItemCount();
colNum = 3;
// XL.SetCellValue(mcolNum+1,mrowNum+2,m_cList.GetItemText(mcolNum,mrowNum));
for (mrowNum=0; mrowNum<rowNum ; mrowNum++)
{
for(mcolNum=0; mcolNum<colNum; mcolNum++)
{
CString mText;
mText = m_cList.GetItemText(mrowNum,mcolNum);
XL.SetCellValue(mcolNum+1,mrowNum+2,mText);//m_cList.GetItemText(mcolNum,mrowNum));
}
}
char Filter[] = "Excel File(*.xls) |*.xls| ALL FILES(*.*) |*.*|";
CFileDialog DataWrite(FALSE, "Excel File(*.xls)", "*.xls", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, Filter, NULL);
if(DataWrite.DoModal() == IDOK)
{
XL.SaveFileAs(DataWrite.GetPathName());
}XL.ReleaseExcel();
}
void CFormThird::OnXlOpen()
{
//Use Windows file dialog to obtain FileName
char Filter[] = "Excel File(*.xls) |*.xls| ALL FILES(*.*) |*.*|";
CFileDialog DataRead(TRUE, // TRUE for FileOpen, FALSE for FileSaveAs
"xls", NULL,
OFN_PATHMUSTEXIST|OFN_OVERWRITEPROMPT,
Filter,
NULL);
char save_path[MAX_PATH];
GetCurrentDirectory(MAX_PATH,save_path);
UpdateData(TRUE);
CString strThisPath;
GetModuleFileName( NULL, save_path, _MAX_PATH);
CXLEzAutomation XL(false);
//Get file name for opening Excel file
CString szFileName = DataRead.GetPathName();
strThisPath.Format("%s\\%s.xls",save_path,szFileName);
if(!SetCurrentDirectory(strThisPath))
{
if(szFileName.IsEmpty())
return;
//Close Excel if failed to open file
if(!XL.OpenExcelFile(szFileName))
{
m_cList.DeleteAllItems();
CString address, field, value;
for(int i=1; ; i++)
{
address=XL.GetCellValue(1,i+1);
field=XL.GetCellValue(2,i+1);
value=XL.GetCellValue(3,i+1);
if ( address == "")
break;
m_cList.InsertItem(i-1,address);
m_cList.SetItemText(i-1,1,field);
m_cList.SetItemText(i-1,2,value);
}
XL.ReleaseExcel();
}