我正在编写一个程序来使用c ++读取excel文件。我只需要文件的两列和excel文件只是不包含字段...它还包含图形。有10列,我需要的两列是第一列和第七列。转换为CSV无效。任何建议PLZ。
谢谢。
答案 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中的值。您应该可以从这里阅读两列数据。