VC实现EXCEL转换为CSV格式

此代码段展示了如何在VC中实现将Excel文件转换为CSV格式,通过COM接口创建Excel实例,打开Excel文件,设置不显示警告,保存为CSV格式,最后关闭Excel。
摘要由CSDN通过智能技术生成

/************************************************************************
 *函数名称:ConverXLSToCSV
 *功能描述:打开EXCEL文件,并转存为CSV格式文件
 *输入参数:pSrcFileName ,源文件;pDesFileName,目标文件
 *输出参数:无
 *返回结果:S_OK,成功;S_FALSE,失败
 *特别说明:无
*************************************************************************/
HRESULT ConverXLSToCSV(const char *pSrcFileName, const char *pDesFileName)
{
 //单线程方式创建COM对象
 ::CoInitialize(0);
 if(1)
 { 
  //初始化EXCEL对象
  CComDispatchDriver execlAppDsp;
  HRESULT hr = execlAppDsp.CoCreateInstance(L"Excel.Application", 0, CLSCTX_LOCAL_SERVER|CLSCTX_INPROC_SERVER); 
  //获取工作页,打开XLS文件
  CComVariant vWorkbooks;
  hr = execlAppDsp.GetPropertyByName(L"Workbooks", &vWorkbooks);
  CComDispatchDriver booksDsp(vWorkbooks.pdispVal);
  CComVariant vSrcFileName(pSrcFileName);
  hr = booksDsp.Invoke1(L"Open", &vSrcFileName);
  //关闭警告对话框
  CComVariant vDisplay(L"FALSE");
  hr = execlAppDsp.PutPropertyByName(L"DisplayAlerts", &vDisplay);
  //打开活动页,另存为CSV文件
  CComVariant vActBook;
  hr = execlAppDsp.GetPropertyByName(L"ActiveWorkbook", &vActBook);
  CComDispatchDriver activeBookDsp(vActBook.pdispVal);
  CComVariant vDesFileName(pDesFileName);
  CComVariant vFileType("6");
  hr = activeBookDsp.Invoke2(L"SaveAs", &vDesFileName, &vFileType);
  //关闭EXCEL
  execlAppDsp.Invoke0(L"Quit");
 }
 //释放
 ::CoUninitialize();

 return S_OK;

国外查找的一源文件如下:

// ExcelCom.h: interface for the ExcelCom class.
//
//

#if !defined(AFX_EXCELCOM_H__E1613E65_0F18_454E_B424_64476E091C7C__INCLUDED_)
#define AFX_EXCELCOM_H__E1613E65_0F18_454E_B424_64476E091C7C__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <atlbase.h>
extern   CComModule _Module;
#include <atlcom.h>

#include <DBTime.h>

class ExcelCom : public CComDispatchDriver
{
    bool    m_Valid;

public:

    CString sCell(int aRow, int aCol);
    VARIANT vCell(int aRow, int aCol);
    bool PutStr(int aRow,  int aCol, const char *aStr);
    bool Close();

    enum XlWindowState
    {
        xlMaximized = -4137,
        xlMinimized = -4140,
        xlNormal    = -4143
    };

    enum XlBordersIndex
    {
        xlInsideHorizontal = 12,
        xlInsideVertical   = 11,
        xlDiagonalDown     = 5,
        xlDiagonalUp       = 6,
        xlEdgeBottom       = 9,
        xlEdgeLeft         = 7,
        xlEdgeRight        = 10,
        xlEdgeTop          = 8
    } ;

    enum  XlLineStyle
    {
        xlContinuous       = 1,
        xlDash             = -4115,
        xlDashDot          = 4,
        xlDashDotDot       = 5,
        xlDot              = -4118,
        xlDouble           = -4119,
        xlSlantDashDot     = 13,
        xlLineStyleNone    = -4142
    } ;

    enum XlBorderWeight
    {
        xlHairline  = 1,
        xlMedium    = -4138,
        xlThick     = 4,
        xlThin      = 2
    } ;

    enum Constants
    {
        xlAll                   = -4104,
        xlAutomatic             = -4105,
        xlBoth                  = 1,
        xlCenter                = -4108,
        xlChecker               = 9,
        xlCircle                = 8,
        xlCorner                = 2,
        xlCrissCross            = 16,
        xlCross                 = 4,
        xlDiamond               = 2,
        xlDistributed           = -4117,
        xlDoubleAccounting      = 5,
        xlFixedValue            = 1,
        xlFormats               = -4122,
        xlGray16                = 17,
        xlGray8                 = 18,
        xlGrid                  = 15,
        xlHigh                  = -4127,
        xlInside                = 2,
        xlJustify               = -4130,
        xlLightDown             = 13,
        xlLightHorizontal       = 11,
        xlLightUp               = 14,
        xlLightVertical         = 12,
        xlLow                   = -4134,
        xlManual                = -4135,
        xlMinusValues           = 3,
        xlModule                = -4141,
        xlNextToAxis            = 4,
        xlNone                  = -4142,
        xlNotes                 = -4144,
        xlOff                   = -4146,
        xlOn                    = 1,
        xlPercent               = 2,
        xlPlus                  = 9,
        xlPlusValues            = 2,
        xlSemiGray75            = 10,
        xlShowLabel             = 4,
        xlShowLabelAndPercent   = 5,
        xlShowPercent           = 3,
        xlShowValue             = 2,
        xlSimple                = -4154,
        xlSingle                = 2,
        xlSingleAccounting      = 4,
        xlSolid                 = 1,
        xlSquare                = 1,
        xlStar                  = 5,
        xlStError               = 4,
        xlToolbarButton         = 2,
        xlTriangle              = 3,
        xlGray25                = -4124,
        xlGray50                = -4125,
        xlGray75                = -4126,
        xlBottom                = -4107,
        xlLeft                  = -4131,
        xlRight                 = -4152,
        xlTop                   = -4160,
        xl3DBar                 = -4099,
        xl3DSurface             = -4103,
        xlBar                   = 2,
        xlColumn                = 3,
        xlCombination           = -4111,
        xlCustom                = -4114,
        xlDefaultAutoFormat     = -1,
        xlMaximum               = 2,
        xlMinimum               = 4,
        xlOpaque                = 3,
        xlTransparent           = 2,
        xlBidi                  = -5000,
        xlLatin                 = -5001,
        xlContext               = -5002,
        xlLTR                   = -5003,
        xlRTL                   = -5004,
        xlFullScript            = 1,
        xlPartialScript         = 2,
        xlMixedScript           = 3,
        xlMixedAuthorizedScript = 4,
        xlVisualCursor          = 2,
        xlLogicalCursor         = 1,
        xlSystem                = 1,
        xlPartial               = 3,
        xlHindiNumerals         = 3,
        xlBidiCalendar          = 3,
        xlGregorian             = 2,
        xlComplete              = 4,
        xlScale                 = 3,
        xlClosed                = 3,
        xlColor1                = 7,
        xlColor2                = 8,
        xlColor3                = 9,
        xlConstants             = 2,
        xlContents              = 2,
        xlBelow                 = 1,
        xlCascade               = 7,
        xlCenterAcrossSelection = 7,
        xlChart4                = 2,
        xlChartSeries           = 17,
        xlChartShort            = 6,
        xlChartTitles           = 18,
        xlClassic1              = 1,
        xlClassic2              = 2,
        xlClassic3              = 3,
        xl3DEffects1            = 13,
        xl3DEffects2            = 14,
        xlAbove                 = 0,
        xlAccounting1           = 4,
        xlAccounting2           = 5,
        xlAccounting3           = 6,
        xlAccounting4           = 17,
        xlAdd                   = 2,
        xlDebugCodePane         = 13,
        xlDesktop               = 9,
        xlDirect                = 1,
        xlDivide                = 5,
        xlDoubleClosed          = 5,
        xlDoubleOpen            = 4,
        xlDoubleQuote           = 1,
        xlEntireChart           = 20,
        xlExcelMenus            = 1,
        xlExtended              = 3,
        xlFill                  = 5,
        xlFirst                 = 0,
        xlFloating              = 5,
        xlFormula               = 5,
        xlGeneral               = 1,
        xlGridline              = 22,
        xlIcons                 = 1,
        xlImmediatePane         = 12,
        xlInteger               = 2,
        xlLast                  = 1,
        xlLastCell              = 11,
        xlList1                 = 10,
        xlList2                 = 11,
        xlList3                 = 12,
        xlLocalFormat1          = 15,
        xlLocalFormat2          = 16,
        xlLong                  = 3,
        xlLotusHelp             = 2,
        xlMacrosheetCell        = 7,
        xlMixed                 = 2,
        xlMultiply              = 4,
        xlNarrow                = 1,
        xlNoDocuments           = 3,
    

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值