高分寻教 小弟我近日碰到一个问题,需要在VC下读取数据,形成WORD和EXCEL文件,另外能否把VC中列表中的数据如实在WORD文档中形成表格小弟我恳求各位大侠赐教方法文档和代码例程,并高分致谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 导入msword9.lib肯定可以.那些类不好记忆.不好操作.vc中有个automation选项是支持自动化宏的,就是这方面,您试试 先贴一段操作Excel的:如何访问Excel文件:1、通过ClassWizard添加相关类:ClassWizard->MessageMaps->AddClass->From a type library选择文件 Program Files\Microsoft Office\Office\Excel8.olb(没有8就有9,只要安装了Office,总会有一个)在上面的列表中选择类(可以多选,不能少选)_Application_Workbook_WorksheetWorkbooksWorksheetsRange2、引用头文件#include "excel8.h"3、在应用程序或对话框初始化中调用CoInitialize(NULL);4、添加代码示例代码一:读一Excel文件数据,按一定格式写入文本文件(说明:没有读出行数和列数,固定为99*99)void Els2Txt(){ CString xls="c:\\test.xls"; CString txt="c:\\test.txt"; COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); //// 操作对象、操作步骤 // 应用 _Application oApp; oApp.SetVisible(TRUE); oApp.CreateDispatch("Excel.Application"); // 窗口 Workbooks oBooks; _Workbook oBook; oBooks = oApp.GetWorkbooks(); oBook = oBooks.Open(xls, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional); // 表格 Worksheets oSheets; _Worksheet oSheet; oSheets = oBook.GetWorksheets(); oSheet = oSheets.GetItem(COleVariant((short)1)); // 数据 Range oRange; oRange = oSheet.GetCells(); // 字段 COleVariant ItemID; _Application pApp; // COleVariant row, col, value; long nRow=oRange.GetRow(); long nCol=oRange.GetColumn(); CString text, temp; nRow=99; nCol=99; BOOL bNO; int NOCount=0; CFile file; if(file.Open(txt,CFile::modeCreate|CFile::modeWrite)) { for(int r=1;r<=nRow&&NOCount<3;r++) { bNO=TRUE; for(int c=1;c<=nCol;c++) { row = (short)r; col = (short)c; ItemID = oRange.GetItem(row,col); pApp.AttachDispatch(ItemID.pdispVal,TRUE); text = pApp.GetValue(); if(text!="") { bNO=FALSE; temp.Format("\"%02d%02d\",%s%c%c",r,c,text.GetBuffer(0),0x0d,0x0a); //AfxMessageBox(temp); file.Write(temp.GetBuffer(0),temp.GetLength()); } } if(bNO)NOCount++; else NOCount=0; } file.Close(); } // oApp.Quit(); oApp.ReleaseDispatch(); text.Format("处理完成: %s",filename); SetDlgItemText(IDC_EDIT4,text);}示例代码二:胡乱打开一个文件,写入一些数据void Test(){ COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); int i,j; CString ssbuf; COleVariant x; COleVariant y; COleVariant data; COleVariant ItemId; _Application pApp; _Application pXlsApp; Workbooks pXlsBooks; Range pXlsRange; pXlsApp.CreateDispatch("Excel.Application"); pXlsApp.m_bAutoRelease = TRUE; pXlsApp.SetVisible(TRUE); LPDISPATCH pWkBooks = pXlsApp.GetWorkbooks(); CString strFile = "C:\\work\\BOOK1.XLS"; pXlsBooks.AttachDispatch(pWkBooks,TRUE); pXlsBooks.Open("c:\\Book1.xls", covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional); LPDISPATCH pCells = pXlsApp.GetCells(); pXlsRange.AttachDispatch(pCells,TRUE); y = (short)1; x = (short)1; ItemId = pXlsRange.GetItem(y,x); pApp.AttachDispatch(ItemId.pdispVal,TRUE); ssbuf = pApp.GetValue(); for(i=1; i<11; i++) { for(j=2; j<11; j++) { x = (short)i; y = (short)j; ssbuf.Format("%c%d",'A'+i-1,j); data.SetString(ssbuf,VT_BSTR); pXlsRange.SetItem(y,x,data); } } pApp.DetachDispatch(); pApp.ReleaseDispatch(); pXlsRange.DetachDispatch(); pXlsRange.ReleaseDispatch(); pXlsBooks.Close(); pXlsBooks.DetachDispatch(); pXlsBooks.ReleaseDispatch(); pXlsApp.Quit(); pXlsApp.ReleaseDispatch();} (Word操作通常要复杂得多吧,这里只是一个简单说明)如何访问Word文件:1、通过ClassWizard添加相关类:ClassWizard->MessageMaps->AddClass->From a type library选择文件 Program Files\Microsoft Office\Office\Msword8.olb(没有8就有9,只要安装了Office,总会有一个)在上面的列表中选择类(如果不能确定选哪些,按下Shift全选上)(东西多多,不知道要用哪些类,实现哪些功能)(慢慢研究吧)2、引用头文件#include "msword8.h"3、添加代码示例代码一:打开MS Word写入一段文字void Test(){ COleVariant covTrue((short)TRUE), covFalse((short)FALSE); _Application wordapp; Documents docs; _Document doc; if(!wordapp.CreateDispatch("Word.Application",NULL)) { AfxMessageBox("not!"); exit(1); } wordapp.SetVisible(TRUE);// FALSE docs=wordapp.GetDocuments(); COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); COleVariant start_line,end_line; start_line.intVal=2; end_line.intVal=50; //doc=docs.Add(COleVariant("c:\\Text.doc"),covOptional); doc=docs.Add(COleVariant("D:\\Program Files\\Microsoft Office\\Templates\\Normal.dot"),covOptional); Range oRange; oRange=doc.Range(start_line,end_line); oRange.SetText("我是王进我怕谁"); try { doc.SaveAs(COleVariant("c:\\temp.doc"),covOptional,covOptional,covOptional, covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional); } catch(COleException *e) { LPVOID lpmsg; :: FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS, NULL,e->m_sc,MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED), (LPTSTR) &lpmsg,0,NULL); } catch(COleDispatchException *e) { char msg[512]; sprintf(msg,"程序运行出错'%d',系统提示信息为:\n\n%s",e->m_wCode & 0x0000ffff,e->m_strDescription); ::MessageBox(NULL,msg,"无法保存文件",MB_OK|MB_SETFOREGROUND); } Sleep(5000); wordapp.Quit( covFalse, covTrue, covFalse ); wordapp.ReleaseDispatch();} OPC客户端数据下发问题,急! error LNK2001: unresolved external symbol 使用CList管理套接字问题? 【高手请进】一小段代码,通过HOST获取IP问题 高分求VC通过DAO读写Access备注型字段的代码 牢骚贴:我和同学的聊天记录,很长哦--没事?看完!写写自己的想法! 怎样创建并显示一个非模态对话框,而且把对话框任何时候都显示在最前边? 我的VC6.0怎样用.NET的MSDN!!! 如何在VC中对串行接口进行检测 Visual Studio 2015调试问题 怎样获得文件对话框保存文件时的扩展名 在Win2000下面怎么禁止关机?
如何访问Excel文件:1、通过ClassWizard添加相关类:ClassWizard->MessageMaps->AddClass->From a type library
选择文件 Program Files\Microsoft Office\Office\Excel8.olb(没有8就有9,只要安装了Office,总会有一个)
在上面的列表中选择类(可以多选,不能少选)
_Application
_Workbook
_Worksheet
Workbooks
Worksheets
Range2、引用头文件#include "excel8.h"3、在应用程序或对话框初始化中调用CoInitialize(NULL);4、添加代码示例代码一:
读一Excel文件数据,按一定格式写入文本文件
(说明:没有读出行数和列数,固定为99*99)
void Els2Txt()
{
CString xls="c:\\test.xls";
CString txt="c:\\test.txt";
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
//// 操作对象、操作步骤
// 应用
_Application oApp;
oApp.SetVisible(TRUE);
oApp.CreateDispatch("Excel.Application");
// 窗口
Workbooks oBooks;
_Workbook oBook;
oBooks = oApp.GetWorkbooks();
oBook = oBooks.Open(xls,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional);
// 表格
Worksheets oSheets;
_Worksheet oSheet;
oSheets = oBook.GetWorksheets();
oSheet = oSheets.GetItem(COleVariant((short)1));
// 数据
Range oRange;
oRange = oSheet.GetCells();
// 字段
COleVariant ItemID;
_Application pApp;
//
COleVariant row, col, value;
long nRow=oRange.GetRow();
long nCol=oRange.GetColumn();
CString text, temp;
nRow=99;
nCol=99;
BOOL bNO;
int NOCount=0;
CFile file;
if(file.Open(txt,CFile::modeCreate|CFile::modeWrite))
{
for(int r=1;r<=nRow&&NOCount<3;r++)
{
bNO=TRUE;
for(int c=1;c<=nCol;c++)
{
row = (short)r;
col = (short)c;
ItemID = oRange.GetItem(row,col);
pApp.AttachDispatch(ItemID.pdispVal,TRUE);
text = pApp.GetValue();
if(text!="")
{
bNO=FALSE;
temp.Format("\"%02d%02d\",%s%c%c",r,c,text.GetBuffer(0),0x0d,0x0a);
//AfxMessageBox(temp);
file.Write(temp.GetBuffer(0),temp.GetLength());
}
}
if(bNO)NOCount++;
else NOCount=0;
}
file.Close();
}
//
oApp.Quit();
oApp.ReleaseDispatch();
text.Format("处理完成: %s",filename);
SetDlgItemText(IDC_EDIT4,text);
}示例代码二:
胡乱打开一个文件,写入一些数据
void Test()
{
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
int i,j;
CString ssbuf;
COleVariant x;
COleVariant y;
COleVariant data;
COleVariant ItemId;
_Application pApp;
_Application pXlsApp;
Workbooks pXlsBooks;
Range pXlsRange;
pXlsApp.CreateDispatch("Excel.Application");
pXlsApp.m_bAutoRelease = TRUE;
pXlsApp.SetVisible(TRUE);
LPDISPATCH pWkBooks = pXlsApp.GetWorkbooks();
CString strFile = "C:\\work\\BOOK1.XLS";
pXlsBooks.AttachDispatch(pWkBooks,TRUE);
pXlsBooks.Open("c:\\Book1.xls",
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional);
LPDISPATCH pCells = pXlsApp.GetCells();
pXlsRange.AttachDispatch(pCells,TRUE);
y = (short)1;
x = (short)1;
ItemId = pXlsRange.GetItem(y,x);
pApp.AttachDispatch(ItemId.pdispVal,TRUE);
ssbuf = pApp.GetValue(); for(i=1; i<11; i++)
{
for(j=2; j<11; j++)
{
x = (short)i;
y = (short)j;
ssbuf.Format("%c%d",'A'+i-1,j);
data.SetString(ssbuf,VT_BSTR);
pXlsRange.SetItem(y,x,data);
}
} pApp.DetachDispatch();
pApp.ReleaseDispatch(); pXlsRange.DetachDispatch();
pXlsRange.ReleaseDispatch(); pXlsBooks.Close();
pXlsBooks.DetachDispatch();
pXlsBooks.ReleaseDispatch(); pXlsApp.Quit();
pXlsApp.ReleaseDispatch();
}
如何访问Word文件:1、通过ClassWizard添加相关类:ClassWizard->MessageMaps->AddClass->From a type library
选择文件 Program Files\Microsoft Office\Office\Msword8.olb(没有8就有9,只要安装了Office,总会有一个)
在上面的列表中选择类
(如果不能确定选哪些,按下Shift全选上)
(东西多多,不知道要用哪些类,实现哪些功能)
(慢慢研究吧)2、引用头文件#include "msword8.h"3、添加代码示例代码一:
打开MS Word写入一段文字
void Test()
{
COleVariant covTrue((short)TRUE), covFalse((short)FALSE);
_Application wordapp;
Documents docs;
_Document doc;
if(!wordapp.CreateDispatch("Word.Application",NULL))
{
AfxMessageBox("not!");
exit(1);
}
wordapp.SetVisible(TRUE);// FALSE
docs=wordapp.GetDocuments();
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
COleVariant start_line,end_line;
start_line.intVal=2;
end_line.intVal=50;
//doc=docs.Add(COleVariant("c:\\Text.doc"),covOptional);
doc=docs.Add(COleVariant("D:\\Program Files\\Microsoft Office\\Templates\\Normal.dot"),covOptional);
Range oRange;
oRange=doc.Range(start_line,end_line);
oRange.SetText("我是王进我怕谁");
try
{
doc.SaveAs(COleVariant("c:\\temp.doc"),covOptional,covOptional,covOptional,
covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional);
}
catch(COleException *e)
{
LPVOID lpmsg;
:: FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,e->m_sc,MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED), (LPTSTR) &lpmsg,0,NULL);
}
catch(COleDispatchException *e)
{
char msg[512];
sprintf(msg,"程序运行出错'%d',系统提示信息为:\n\n%s",e->m_wCode & 0x0000ffff,e->m_strDescription);
::MessageBox(NULL,msg,"无法保存文件",MB_OK|MB_SETFOREGROUND);
}
Sleep(5000);
wordapp.Quit( covFalse, covTrue, covFalse );
wordapp.ReleaseDispatch();
}