VCMFC中如何将数据导入excel表格

VCMFC中如何将数据导入excel表格,第1张

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

有图,很好很强大


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11982976.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存
{label} {label} {label}