用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;
}
附:來自http://www.kaifa6.com/v/MFCShouce/class/CStringArray.htm)
CStringArray類成員
構造
CStringArray
構造一個空的CString對象數組
綁定
GetSize
獲取這個數組中的元素數目
SetSize
設置這個數組中包含的元素數目
GetUpperBound
返回最大的有效索引
操作符
FreeExtra
釋放當前數組邊界之外的未使用的所有內存
RemoveAll
從數組中刪除所有元素
元素訪問
GetAt
返回位於給定索引處的值
SetAt
設置給定索引處的元素的值;不得將數組增大
ElementAt
返回對數組中的某一元素指針的臨時引用
GetData
對數組中的元素允許的訪問。可以是NULL
擴大數組
SetAtGrow
設置給定索引處的值,如果必要的話可以增長數組
Add
在數組的末尾添加一個元素;可根據需要增長數組
Append
向數組中添加另一個數組;如果必要的話可增長數組
Copy
將另一個數組拷貝到此數組中;如果必要的話可增長數組
插入/刪除
InsertAt
在指定索引處插入一個元素或者是另一個數組中的所有元素)
RemoveAt
刪除指定索引處的一個元素
操作符
operator []
設置或獲取在指定索引處的元素
站長統計
本文出自 “ClickFuture” 博客,請務必保留此出處http://pingpeace.blog.51cto.com/304509/227743