1、问题
我在使用MFC操作Excel表格时使用 Workbook 类的SaveAs函数保存,这时一直抛出异常,捕获后发现提示类Workbook的SaveAs方法无效。
2、代码
if (S_OK != CoInitializeEx(NULL, COINIT_MULTITHREADED))
{
return FALSE;
}
//创建Excel服务
if (m_hApplication.CreateDispatch(("Excel.Application"))
== FALSE)
{
//AfxMessageBox("创建Excel服务失败");
return false;
}
m_hApplication.SetVisible(FALSE);
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,
VT_ERROR);
//获取工作薄集合
m_hWorkbooks = m_hApplication.GetWorkbooks();
//添加一个工作薄
m_hWorkBook = m_hWorkbooks.Add(covOptional);
//获取工作表集合
m_hWorkSheets = m_hWorkBook.GetSheets();
//获取第一个工作表
m_hWorkSheet = m_hWorkSheets.GetItem(COleVariant((short)1));
//选择工作表中A1:A1单元格区域
m_hRange = m_hWorkSheet.GetRange(COleVariant("A1"),
COleVariant("A1"));
//设置A1="HELLO EXCEL"
m_hRange.SetValue2(COleVariant("HELLO EXCEL!"));
COleVariant VOptional((long)DISP_E_PARAMNOTFOUND,
VT_ERROR);
try {
m_hWorkBook.SaveAs(COleVariant(spath),
VOptional,
VOptional,
VOptional,
VOptional,
VOptional,
(long)1,
VOptional,
VOptional,
VOptional,
VOptional,
VOptional);
}
catch (COleDispatchException *pe)
{
CString cStr;
if (!pe->m_strSource.IsEmpty())
cStr = pe->m_strSource + _T(" - ");
if (!pe->m_strDescription.IsEmpty())
cStr += pe->m_strDescription;
else
cStr += _T("unknown error");
pe->m_wCode;
AfxMessageBox(cStr, MB_OK,
(pe->m_strHelpFile.IsEmpty()) ? 0 : pe->m_dwHelpContext);
pe->Delete();
}
上述传入的目录是 :C:\Store\FileOutput\test20200323_24d50ca183664d039fc050ea072e785e\test20200323\2020年4月17\Data_2020-4-20_13-40-2.xlsx
3、其他
在网上百度了一下,大多数是说文件路径问题,但是我确定我的文件路径没有问题,路径存在且有权限。
希望大佬帮忙看下!!!谢谢!!!