VC 写excel文件的效率

比如使用ole ,basicExcel ,或者其他方法,写1M需要使用的时间,其中,写了多少行,多少列
我使用basicExcel 写了1M的数据一万行,6列,保存数据阶段花费了2.4s,计算机环境:window xp 512M,内存40G的虚拟机中执行的。在讲exe文件放到win8 系统时需要10s

使用ole 调用测试居然用了17s
代码引用:http://www.cnblogs.com/yaowen/archive/2013/01/22/2870762.html
CString strFile;
strFile.Format("%s", "F:\George\studying\code\oleExcel\oleExcel\excel.xlsx");
COleVariant covTrue((short)TRUE), covFalse((short)FALSE), covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

CApplication app;
CWorkbook book;
CWorkbooks books;
CWorksheet sheet;
CWorksheets sheets;
CRange range;
CFont font;

if (!app.CreateDispatch(_T("Excel.Application")))
{
    MessageBox(_T("Error!Creat Excel Application Server Faile!"));
}

books = app.get_Workbooks();
//books.AttachDispatch(app.get_Workbooks());可代替上面一行
book = books.Add(covOptional);
//book.AttachDispatch(books.Add(covOptional),true); 可代替上面一行
sheets=book.get_Worksheets();
//sheets.AttachDispatch(book.get_Worksheets(),true); 可代替上面一行
sheet = sheets.get_Item(COleVariant((short)1));
//sheet.AttachDispatch(sheets.get_Item(_variant_t("sheet1")),true); 可代替上面一行
//下面两行,是向A1中写入"Yeah!I can write data to excel!"
clock_t timeS =clock();
range = sheet.get_Range(COleVariant(_T("A1")),COleVariant(_T("A1"))); 
//range.put_Value2(COleVariant(_T("Yeah!I can write data to excel!")));

//下面是向第二行的前十个单元格中输入1到10,十个数字
for(long j=10;j<10000;j++)
    for(long i=1;i<11;i++)
        range.put_Item(_variant_t((long)j),_variant_t((long)i),_variant_t((long)i));

//设置列宽
range = sheet.get_Range(COleVariant(_T("A1")),COleVariant(_T("J1")));
range.put_ColumnWidth(_variant_t((long)5));

//显示表格
//app.put_Visible(TRUE);

//保存
book.SaveCopyAs(COleVariant(strFile)); 
book.put_Saved(true);
int t = (int)(clock() - timeS);
CString T;
T.Format("%d ms",t);
this->MessageBox(T);
//结尾,释放

有朋友做过测试没,可以说下为啥用时这么多吗?

你说的ole,应该是指调用vba写excel,这个和你excel的版本,以及系统环境都有关。要想快,可以用 npoi 等原生的库,而不要用 vba,vba需要在进程外启动一个 excel,效率不可能高。