我想做个程序,从自己的程序里可以打开WORD和EXCEL文件,查看文件内容,我不想用浏览器来做,听说可以用OLE来实现,想请教哪位有这方面的资料可以指导一下?
解决方案 »
- NotifyAddrChange 开2个应用程序的时候,关闭一个,会提示IP改变?
- CSOCKET的UDP框架如何获得客户端的IP和端口
- 一个关于文本查找的界面刷新问题
- pDC->TextOut好像不能输出数值,如何输出?
- 数据转换的警告怎么解决?
- 为什么我的程序在debug模式下可以build,在release模式下就不可以build
- 请教各位高人:在vc中如何在点击对话框最小话按纽后,对话框加如系统右下角的任务栏中。
- 怎样在没有菜单的窗口上添加菜单?
- vs2012使用ArcEngine会出很多问题吗?
- 武汉的读者请注意:侯捷先生在华工的讲座时间是10月24日晚上19:00,地点在华工西五楼117教室,请大家互相转告各自的同学,谢谢啦。
- 如何使用VS2005编译FFMPEG源码
- 区域填充的效率问题
2,在应用程序的InitInstance()中初始化OLE,代码如下:
// Initialize OLE libraries
if (!AfxOleInit())
{
AfxMessageBox("Failed to initialize OLE");
return FALSE;
}
3、运用类向导添加execl类型库,类型库默认在"C:\Program Files\Microsoft Office\Office11
4.添加ole库中各个变量。实现
1void CControlExcelDoc::OnControlExcel()
2{
3 // TODO: Add your command handler code here
4 COleVariant vtOptional((long)DISP_E_PARAMNOTFOUND,
5 VT_ERROR),vtTrue((short)TRUE),vtFalse((short)FALSE);
6 _Application *ExcelApp = new _Application;
7
8 ExcelApp->CreateDispatch("excel.application");
9
10 //设置为显示
11 ExcelApp->SetVisible(TRUE);
12 //得到WorkBooks
13 Workbooks ExcelBook=ExcelApp->GetWorkbooks();
14 Sheets ExcelSheet=ExcelBook.Add(vtOptional);
15 _Workbook workBook;
16 _Worksheet workSheet;
17 Range range;
18 workBook.AttachDispatch(ExcelApp->GetApplication());
19 ExcelSheet=workBook.GetSheets();
20
21 ////////////////////////////////////////////
22 workSheet=ExcelSheet.GetItem(COleVariant((short)1));
23 workSheet.Activate();
24
25
26 Range myallrange=workSheet.GetRange(COleVariant("A1"),COleVariant("D1"));
27 //myallrange.BorderAround(COleVariant((short)1),(long)2,(long)1,vtOptional);
28 myallrange.SetHorizontalAlignment(COleVariant((short)3));
29 myallrange.Merge(COleVariant((short)1));
30 myallrange.SetValue(COleVariant("个人信息表"));
31
32 Range myrange=workSheet.GetRange(COleVariant("A2"),COleVariant("A2"));
33 myrange.SetValue(COleVariant("姓名"));
34 myrange.BorderAround(COleVariant((short)1),(long)2,(long)1,vtOptional);
35 myrange.SetHorizontalAlignment(COleVariant((short)3));
36 myrange.SetVerticalAlignment(COleVariant((short)2));
37 myrange.SetColumnWidth(COleVariant((short)15));
38
39 myrange=workSheet.GetRange(COleVariant("B2"),COleVariant("B2"));
40 myrange.SetValue(COleVariant("性别"));
41 myrange.BorderAround(COleVariant((short)1),(long)2,(long)1,vtOptional);
42 myrange.SetHorizontalAlignment(COleVariant((short)3));
43 myrange.SetVerticalAlignment(COleVariant((short)2));
44 myrange.SetColumnWidth(COleVariant((short)15));
45
46 myrange=workSheet.GetRange(COleVariant("C2"),COleVariant("C2"));
47 myrange.SetValue(COleVariant("QQ"));
48 myrange.BorderAround(COleVariant((short)1),(long)2,(long)1,vtOptional);
49 myrange.SetHorizontalAlignment(COleVariant((short)3));
50 myrange.SetVerticalAlignment(COleVariant((short)2));
51 myrange.SetColumnWidth(COleVariant((short)15));
52
53 myrange=workSheet.GetRange(COleVariant("D2"),COleVariant("D2"));
54 myrange.SetValue(COleVariant("Email"));
55 myrange.BorderAround(COleVariant((short)1),(long)2,(long)1,vtOptional);
56 myrange.SetHorizontalAlignment(COleVariant((short)3));
57 myrange.SetVerticalAlignment(COleVariant((short)2));
58 myrange.SetColumnWidth(COleVariant((short)17));
59
60 CString str;
61 for(int i=3;i<=500;i++)
62 {
63 str.Format("A%d",i);
64 Range myrange=workSheet.GetRange(COleVariant(str),COleVariant(str));
65 myrange.SetValue(COleVariant("名字"));
66 myrange.BorderAround(COleVariant((short)1),(long)2,(long)1,vtOptional);
67 myrange.SetHorizontalAlignment(COleVariant((short)3));
68 myrange.SetVerticalAlignment(COleVariant((short)2));
69
70 str.Format("B%d",i);
71 myrange=workSheet.GetRange(COleVariant(str),COleVariant(str));
72 myrange.SetValue(COleVariant("男"));
73 myrange.BorderAround(COleVariant((short)1),(long)2,(long)1,vtOptional);
74 myrange.SetHorizontalAlignment(COleVariant((short)3));
75 myrange.SetVerticalAlignment(COleVariant((short)2));
76
77 str.Format("C%d",i);
78 myrange=workSheet.GetRange(COleVariant(str),COleVariant(str));
79 myrange.SetValue(COleVariant("12345678"));
80 myrange.BorderAround(COleVariant((short)1),(long)2,(long)1,vtOptional);
81 myrange.SetHorizontalAlignment(COleVariant((short)3));
82 myrange.SetVerticalAlignment(COleVariant((short)2));
83
84 str.Format("D%d",i);
85 myrange=workSheet.GetRange(COleVariant(str),COleVariant(str));
86 myrange.SetValue(COleVariant("[email protected]"));
87 myrange.BorderAround(COleVariant((short)1),(long)2,(long)1,vtOptional);
88 myrange.SetHorizontalAlignment(COleVariant((short)3));
89 myrange.SetVerticalAlignment(COleVariant((short)2));
90 }
91
92 delete ExcelApp;
93
94}
BeginWaitCursor();
CEmbedWordCntrItem* pItem = NULL;
TRY
{
CEmbedWordDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pItem = new CEmbedWordCntrItem(pDoc);
ASSERT_VALID(pItem);
CLSID clsid;
if (FAILED(::CLSIDFromProgID(L"Word.document", &clsid)))
AfxThrowMemoryException();
if (!pItem->CreateFromFile(m_sPath, clsid))
AfxThrowMemoryException();
pItem->openState;
pItem->DoVerb(OLEIVERB_SHOW, this);
m_pSelection = pItem;
pDoc->UpdateAllViews(NULL);
LPDISPATCH lpDisp;
lpDisp = pItem->GetIDispatch();
}
CATCH(CException, e)
{
if (pItem != NULL)
{
ASSERT_VALID(pItem);
pItem->Delete();
}
AfxMessageBox(IDP_FAILED_TO_CREATE);
}
END_CATCHEndWaitCursor();
但打开文件后还是可以编辑保存复制,就跟用WORD打开一个文件一样的效果,不知道该怎么做可以使打开的文件只能浏览,不能编辑保存复制