|
发表于 2016-12-12 12:59:01
|
显示全部楼层
首先需要CAXA 组件的许可,采用最新的CAXA组件版本(至少2009之后版本所带的组件)。
对于电子图板,可以参考组件自带的例子,已经很够了。
对于工艺给您几行代码可以做参考:
1.提取卡片表格内容
void CTestComDlg::OnButton2()
{
// TODO: Add your control notification handler code here
// 1.获取输入文件名,输出文件名,模板文件
bool bGetInputName = false;
bool bGetOutPutName = false;
bGetInputName=GetInputFieName(1);
if(!bGetInputName)
return;
bGetOutPutName=GetOutPutName();
if(!bGetOutPutName)
return;
// 2.输出到txt
HRESULT hRet;
CLSID clsid;
ICAPPInfo *pInterface=NULL;
ICAPPXmlInfo *pXmlInterface = NULL;
hRet=::CLSIDFromProgID(L"CAXAInfo.CAPPInfo",&clsid);
if(FAILED(hRet))
return;
hRet=CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,IID_ICAPPInfo,(void **)&pInterface);
if(FAILED(hRet))
return;
CString CappFileName = sInputFileName;
CString TxtXmlFileName= sOutPutFileName;
CString sExtFilter = sFileExt;
VARIANT_BOOL ret;
BSTR BstrEbFileName,BstrTxtXmlFileName;
int iCardMask = 1|2|4|8|16;
BstrEbFileName=CappFileName.AllocSysString();
BstrTxtXmlFileName=TxtXmlFileName.AllocSysString();
if(sExtFilter == "xml")
{
pXmlInterface =(ICAPPXmlInfo*) pInterface;
hRet=pXmlInterface->InfoToXmlFile(BstrEbFileName,iCardMask,BstrTxtXmlFileName,&ret);
pXmlInterface = NULL;
}
else
{
pXmlInterface =(ICAPPXmlInfo*) pInterface;
hRet=pXmlInterface->InfoToTxtFile(BstrEbFileName,BstrTxtXmlFileName,&ret);
pXmlInterface = NULL;
}
if(FAILED(hRet))
{
::SysFreeString(BstrEbFileName);
::SysFreeString(BstrTxtXmlFileName);
HandError(pInterface,IID_ICAPPInfo);
pInterface->Release();
return;
}
::SysFreeString(BstrEbFileName);
::SysFreeString(BstrTxtXmlFileName);
pInterface->Release();
}
2.在单元格中反写字符串
void CTest10Dlg::OnAddtexttocappbutton1()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CString sCellContent="";
CString sTemp="";
sTemp=m_sColName+"^"+m_sInsTxtToCxp;//+"&"+m_sInsTxtToCxp;
CComBSTR bstPath,bstFilePath,bsCellContent;
bstFilePath = m_sFilePath.AllocSysString();
bsCellContent =sCellContent .AllocSysString();
bstPath = m_sImgPath.AllocSysString();
int iAlignMode = m_ComboxAlignMode.GetCurSel();
int iFillInMode = m_CheckFillInMode.GetCheck();
CComBSTR bstCardname,bstColumnName;
bstCardname = m_sCardName.AllocSysString();
bstColumnName = sTemp.AllocSysString();
VARIANT_BOOL bRet;
OnBtnOpenCxpfile();
if (NULL != g_pICappInfo)
{
CComQIPtr<ICAPPXmlInfo> spCappFillInfo = g_pICappInfo;
spCappFillInfo->WriteTxtInfoToCard(bstCardname,bstColumnName,m_iRowNum,&bRet);
}
OnBtnCloseCxpfile();
}
3.在单元格中反写图片
void CTest10Dlg::OnButtonAddimgtocxp()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CComBSTR bstPath,bstFilePath;
bstFilePath = m_sFilePath.AllocSysString();
bstPath = m_sImgPath.AllocSysString();
int iAlignMode = m_ComboxAlignMode.GetCurSel();
int iFillInMode = m_CheckFillInMode.GetCheck();
CComBSTR bstCardname,bstColumnName;
bstCardname = m_sCardName.AllocSysString();
bstColumnName = m_sColName.AllocSysString();
VARIANT_BOOL bRet;
OnBtnOpenCxpfile();
if (NULL != g_pICappInfo)
{
CComQIPtr<ICAPPXmlInfo> spCappXmlInfo = g_pICappInfo;
spCappXmlInfo->WriteImgToCard(bstPath,bstCardname,bstColumnName,m_iRowNum,iAlignMode,iFillInMode,&bRet);
}
OnBtnCloseCxpfile();
}
|
|