/************************************************************************
*函数名称: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,