c ++读取包含数据和图形的excel文件

时间:2011-03-29 05:31:54

标签: c++ excel csv

我正在编写一个程序来使用c ++读取excel文件。我只需要文件的两列和excel文件只是不包含字段...它还包含图形。有10列,我需要的两列是第一列和第七列。转换为CSV无效。任何建议PLZ。

谢谢。

2 个答案:

答案 0 :(得分:0)

您需要将文件另存为CSV,然后使用fopen读取CSV文件。您还需要自己开始做作业,而不是要求互联网上的人寻求帮助。

答案 1 :(得分:0)

Excel可以通过其COM接口以编程方式驱动。这是一些代码:

#include <windows.h>
#include <iostream>

#import "C:\Program Files\Common Files\Microsoft Shared\OFFICE11\MSO.DLL" rename( "RGB", "MSORGB" ), rename( "DocumentProperties", "MSODocProps" )
#import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB" rename ( "Application", "VBApplication" )

namespace Excel
{
    using namespace Office;
    using namespace VBIDE;
}

#import "C:\Program Files\Microsoft Office\OFFICE11\Excel.EXE" \
    rename( "RGB", "RGB_" ), \
    rename( "CopyFile", "CopyFile_" ), \
    rename( "DialogBox", "DialogBox_" ), \
    rename( "ReplaceText", "ReplaceText_" )

int main(int argc, char* argv[])
{
    ::CoInitialize( NULL );

    try
    {
        Excel::_ApplicationPtr excel( "Excel.Application" );
        Excel::WorkbooksPtr wbs = excel->Workbooks;
        Excel::_WorkbookPtr wb = wbs->Open( _bstr_t( "c:\\temp\\test.xls" ) );
        Excel::_WorksheetPtr sheet = wb->Sheets->GetItem( 1 ); // First sheet
        Excel::RangePtr range = sheet->Cells->GetItem( 1, 1 ); // Row, column
        _variant_t value = range->Value;
    }   
    catch( _com_error& e )
    {
        std::cerr << "0x" << std::hex << e.Error() << std::endl;
    }
    catch( ... )
    {
        std::cerr << "Unexpected error" << std::endl;
    }

    ::CoUninitialize();
    return 0;
}

此代码获取从光盘加载的电子表格中单元格A1中的值。您应该可以从这里阅读两列数据。