目前我知道的方法有
1、利用MSOWC.CAB在网页中某个位置显示excel;
2、利用frame直接将src指向某一excel文件;
目前需求为,客户端从服务器处获取excel文件,然后在客户端对该文件进行操作,最后能上传(这部分先不用考虑)。不知道用什么方法好一些,还有对excel的控制如何实现。
1、利用MSOWC.CAB在网页中某个位置显示excel;
2、利用frame直接将src指向某一excel文件;
目前需求为,客户端从服务器处获取excel文件,然后在客户端对该文件进行操作,最后能上传(这部分先不用考虑)。不知道用什么方法好一些,还有对excel的控制如何实现。
oExcelSheet = new ActiveXObject('Excel.Sheet');
oExcelSheet.Activate();
oExcelSheet.ActiveSheet.Cells(1,1).Value = "Halo, world";
oExcelSheet.SaveAs("C:\TEST.XLS");
oExcelSheet.Application.Quit();这是操作的方法 。
例:
void CWebOfficeView::EmbedAutomateDoc(void)
{
BeginWaitCursor();
CDC* pDC;
pDC=GetDC();
COleVariant vTrue((short)TRUE),vFalse((short)FALSE),vOpt((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
CWebOfficeOleClientItem* pItem=NULL;
TRY
{
CWebOfficeDoc* pDoc=GetDocument();
ASSERT_VALID(pDoc);
pItem=new CWebOfficeOleClientItem(pDoc);
ASSERT_VALID(pItem);
CLSID clsid;
if(FAILED(::CLSIDFromProgID(L"Word.Document.8",&clsid)))
AfxThrowMemoryException();
if(m_FileName.GetLength()==8)
{
if(!pItem->CreateNewItem(clsid))
AfxThrowMemoryException();
}
else
{
if(m_FileName.Find("Http://",0)!=-1)
{
if(!pItem->CreateFromFile(DownTemplate(m_FileName),clsid))
{
AfxThrowMemoryException();
}
}
else
{
if(!pItem->CreateFromFile(DownTemplate(m_FileName),clsid))
{
AfxThrowMemoryException();
}
}
}
ASSERT_VALID(pItem);
pItem->DoVerb(OLEIVERB_SHOW,this);
m_pSelection=pItem;
lpDisp=pItem->GetIDispatch();
_Application_Word m_WordApp;
_Document_Word m_WordDoc;
m_WordDoc.AttachDispatch(lpDisp,TRUE);
m_WordDoc.Activate();
m_WordApp=m_WordDoc.GetApplication();
m_WordDoc.ReleaseDispatch();
m_WordApp.ReleaseDispatch();
pDoc->UpdateAllViews(NULL);
}
CATCH(COleException,e)
{
char strErrorBuf[255];
e->GetErrorMessage(strErrorBuf,255,NULL);
AfxMessageBox(strErrorBuf,MB_ICONINFORMATION);
if (pItem!=NULL)
{
ASSERT_VALID(pItem);
pItem->Delete();
}
}
END_CATCH
EndWaitCursor();
}
比较笨的办法,就是在工作表上方放N排文本框(或其他控件),然后上传前利用JS将工作表里的资料copy进控件内。