用C++读取EXCEL表格内容是一件很麻烦的事,今天看了《把脉VC++》里面提到了用
CStringArray
读取EXCEL表格内容,确实不错。
主要是先将EXCEL转存成CSV格式(这种格式经常用来作为不同程序之间数据交互的格式)。
然后用C++程序读取CSV。
主要包括两个类:
class CRow
{
private:
CStringArray * _row;
public:
CRow(CStringArray * row);
int getColumnCount(void);
CString getColumn(int i);
};
class CSheet
{
private:
CTypedPtrArray<CPtrArray, CStringArray *> _rows;
public:
CSheet(void);
~CSheet(void);
int loadFrom(ifstream & in);
int getRowCount(void);
CRow getRow(int i);
};
具体方法参照《把脉VC++》
demo:
int main()
{
CSheet sheet;
//打开csv文件
ifstream in("test.csv");
//加载至CSheet
sheet.loadFrom(in);
//打开转存到的目标文件txt
ofstream out("test.txt");
char* sTmp = new char[100];
for(int i = 0; i < sheet.getRowCount(); i++)
{
_tprintf(_T("[%02d] "), i);
//获取指定行
CRow row = sheet.getRow(i);
for(int j = 0; j < row.getColumnCount(); j++)
{
//获取指定列
CString s = row.getColumn(j);
_tprintf(_T("%s "), s);
//把CString 类型转成char*类型
sprintf(sPane,_T("%s "),s);
//保存在TXT文件中
//cout<<"\n"<<sTmp<<endl;
out<<sPane<<"\t";
}
_tprintf(_T("\r\n"), i);
out<<"\n";
}
out.close();
in.close();
return 0;
}