网上有很多C++利用OLE读取Excel的例子,其中有提到利用COleSafeArray类来预加载数据来提升效率,但是没有实现快速的写入大量数据到Excel,今天专门写了一个方法,同样利用COleSafeArray类将大量数据一次性的写入Excel,提高了效率,参考代码如下:
void CExcelFile::SetString(long startRow, long startCol, long RowCount, long ColCount, vector< vector<CComBSTR> >& writeData)
{
if (startRow < 1 || startCol < 1)
{
return;
}
VARTYPE vt = VT_BSTR; /*数组元素的类型,string*/
SAFEARRAYBOUND sabWrite[2]; /*用于定义数组的维数和下标的起始值*/
sabWrite[0].cElements = RowCount;
sabWrite[0].lLbound = 0;
sabWrite[1].cElements = ColCount;
sabWrite[1].lLbound = 0;
COleSafeArray olesaWrite;
olesaWrite.Create(vt, sizeof(sabWrite) / sizeof(SAFEARRAYBOUND), sabWrite);
/*通过指向数组的指针来对二维数组的元素进行间接赋值*/
long(*pArray)[2] = NULL;
olesaWrite.AccessData(