1、首先,打开媒介工具“记事本”,将word文件里需要导入的数据,复制粘贴到记事本当中,然后保存成为txt文件,本例中将txt文件取名为“数据源.txt”。
2、打开excel表格,点击“数据”选项卡,找到“自文本”。
3、点击“自文本”,d出下森唯宴一窗口,选择刚才保存的名为“数据山慎源”的txt类型文件,点击“导入”。因“自文此银本”方式数据导入默认的只有三种文件类型txt、csv、prn,所以需要事先将word转变为txt。
程序如下:// t2.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "t2.h"
#include "excel.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__
#endif
///////////////////////////举弊/////////////////////////////////////衫伏/////////////
// The one and only application object
CWinApp theApp
using namespace std
void CalculateExcel(CString strFile)
{
_Application app
_Workbook book
_Worksheet sheet
Workbooks books
Worksheets sheets
Range range
LPDISPATCH lpDisp
COleVariant vResult
COleVariant covTrue((short)TRUE)
COleVariant covFalse((short)FALSE)
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR)
//创建Excel服务器(启动Excel)
if(!app.CreateDispatch("Excel.Application"))
{
AfxMessageBox("无法启动Excel服务器!")
return
}
app.SetVisible(FALSE) //使Excel不可见
//打开demo.xls
books.AttachDispatch(app.GetWorkbooks())
lpDisp = books.Open(strFile,
covOptional, covFalse, covOptional, covOptional, covOptional,
covOptional, covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional, covOptional, covOptional)
//得到Workbook
book.AttachDispatch(lpDisp)
//得到Worksheets
sheets.AttachDispatch(book.GetWorksheets())
//得到当前活跃sheet
//如果有单元格正处于编辑状态中,此 *** 作不能返回,会一直等待
lpDisp=book.GetActiveSheet()
sheet.AttachDispatch(lpDisp)
//读取已经使用区域的信息,包括已经使用的行数、列数、起始行、起始列
Range usedRange
usedRange.AttachDispatch(sheet.GetUsedRange())
range.AttachDispatch(usedRange.GetRows())
long iRowNum=range.GetCount() //已经使用的行数
long iStartRow=usedRange.GetRow() //已或答携使用区域的起始行,从1开始
//读取每一行的内容
CString strValue1 // 第一个单元格内容
double dValue2 // 第二个单元格内容
CString strTmp // 临时存储字符串
double dResult = 0.0 // 计算结果
double dRowIndex // 目标行
for (int i=iStartRowi<=iRowNumi++)
{
// 得到本行第一个单元格的内容(字符串)
range.AttachDispatch(usedRange.GetItem(COleVariant((long)i), COleVariant((long)1)).pdispVal)
vResult = range.GetText()
strValue1 = vResult.bstrVal
// 得到本行第二个单元格的内容(double)
range.AttachDispatch(usedRange.GetItem(COleVariant((long)i), COleVariant((long)2)).pdispVal)
vResult = range.GetText()
strTmp = vResult.bstrVal
dValue2 = atof(strTmp)
// 判断本行是不是应该写入计算结果的那一行
if (strValue1 == "call price")
{
dRowIndex = i
break
}
strTmp.Format("%d\t%s\t\t%.2f\n", i, strValue1, dValue2)
printf(strTmp)
// 求和
dResult += dValue2
}
strTmp.Format("\nthe result:\n%s\t%.2f\n", strValue1, dResult)
printf(strTmp)
// 写入计算结果
usedRange.SetItem(COleVariant((long)dRowIndex), COleVariant((long)2), COleVariant((double)dResult))
// 保存
book.Save()
//关闭所有的book,退出Excel
book.Close (covOptional,COleVariant(strFile),covOptional)
books.Close()
app.Quit()
}
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0
// initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
cerr <<_T("Fatal Error: MFC initialization failed") <<endl
nRetCode = 1
}
else
{
// TODO: code your application's behavior here.
CString strHello
strHello.LoadString(IDS_HELLO)
cout <<(LPCTSTR)strHello <<endl
}
::CoInitialize(NULL)
//初始化COM的动态连接库
if(!AfxOleInit())
{
AfxMessageBox("无法初始化COM的动态连接库!")
return 0
}
char szCurrPath[300]
::GetCurrentDirectoryA(300, szCurrPath)// 得到程序所在目录
CalculateExcel((CString)szCurrPath + "\\demo.xls")
::CoUninitialize()
return nRetCode
}
参考地址:http://apps.hi.baidu.com/share/detail/2680421
有图,很好很强大
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)