bcb中用数组给Excel的区域赋值
2008-10-23 22:21
471 查看
今天导出Excel文件时,由于数据量比较大,一个一个单元格的写,速度比较慢慢。我在自己的机器上测试了一下,如果数据量为5万多时,需要的时间大概要8分钟左右,速度实在太慢了。我想能不能给Excel的区域赋值呢,这样的速度可能会快一点。于是自己上网查了查资料,但是这部分的资料大部分是Vb的,BCB关于区域赋值的资料几乎没有。于是自己在机器上试试一两个小时,终于给试出来了,不敢私藏,拿出来给大家看看,看看有没有更好的办法。
代码如下:
Variant ExcelApp, Sheet;
try
{
ExcelApp=Variant::CreateObject( "Excel.Application");
}
catch(...)
{
MessageBox(Handle, "无法启动Excel! ", "信息提示 ",MB_ICONSTOP|MB_OK);
return;
}
ExcelApp.OlePropertySet( "Visible",false);
ExcelApp.OlePropertyGet("Workbooks").OleFunction("Add", 1);
Sheet = ExcelApp.OlePropertyGet("ActiveWorkbook").OlePropertyGet("Sheets", 1);
String str[4];
str[0] = "11";
str[1] = "2";
str[2] = "33";
str[3] = "44";
int Bounds[4] = {0,1,0,3}; //二维数组 相当于 Datas[1][4]
Variant Datas= VarArrayCreate(Bounds, 3, varVariant);
for(int i=0;i<1;i++)
{
for(int j=0;j<4;j++)
{
Datas.PutElement(str[j],i,j);
}
}
Sheet.OlePropertyGet("range","A1:D1").OlePropertySet("Value", Datas);
ExcelApp.OlePropertyGet("ActiveWorkbook").OleFunction("SaveAs", "c://11.xls");
ExcelApp.OleFunction("Quit");
Sheet = Unassigned;
ExcelApp = Unassigned;
代码如下:
Variant ExcelApp, Sheet;
try
{
ExcelApp=Variant::CreateObject( "Excel.Application");
}
catch(...)
{
MessageBox(Handle, "无法启动Excel! ", "信息提示 ",MB_ICONSTOP|MB_OK);
return;
}
ExcelApp.OlePropertySet( "Visible",false);
ExcelApp.OlePropertyGet("Workbooks").OleFunction("Add", 1);
Sheet = ExcelApp.OlePropertyGet("ActiveWorkbook").OlePropertyGet("Sheets", 1);
String str[4];
str[0] = "11";
str[1] = "2";
str[2] = "33";
str[3] = "44";
int Bounds[4] = {0,1,0,3}; //二维数组 相当于 Datas[1][4]
Variant Datas= VarArrayCreate(Bounds, 3, varVariant);
for(int i=0;i<1;i++)
{
for(int j=0;j<4;j++)
{
Datas.PutElement(str[j],i,j);
}
}
Sheet.OlePropertyGet("range","A1:D1").OlePropertySet("Value", Datas);
ExcelApp.OlePropertyGet("ActiveWorkbook").OleFunction("SaveAs", "c://11.xls");
ExcelApp.OleFunction("Quit");
Sheet = Unassigned;
ExcelApp = Unassigned;
相关文章推荐
- 要使用 MFC 使 Excel 和使用数组填充区域
- VBA_把Excel某一区域的内容读入到数组中/把数组的内容写入到Excel中
- 如何使用 MFC 自动化 Excel 2000 和 Excel 2002 和 Excel 2000 和 Excel 2002 的一个区域中获取一个数组
- 如何通过 Visual C# 使 Excel 自动执行操作以使用数组来填充或获取某区域中的数据
- 关于Excel数组赋值出错的问题, 800A03EC 错误
- js数组赋值:不修改原数组,返回新的数组 。
- 文档类数组中数据导入到Excel及Excel chart作图
- 据说是腾讯的面试题:两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i]赋值,b[i] = a[0]*a[1]*a[2]...*a[N-1]/a[i];
- (转)Excel编程概念之:【单元格和区域】二、在单元格区域中循环
- VBA Range与数组互相赋值
- HDU 1556(树状数组 区域更新,单点求值)
- 定义一个100长度的整型数组,使用rand函数生产随机数对每个元素进行赋值,顺序遍历该数组,输出所有值大于50的数
- JAVA中给数组动态赋值及在数组中查找数据
- 把excel内容转换成字符串数组
- Linux的数组、字符串处理以及变量赋值
- 从Vuex中取出数组赋值给新的数组,新数组push时报错
- 使用SQL查询语句时,数组动态赋值SQL IN ()作为条件条件一个
- 给动态数组一次性赋值
- 在Excel中统计出指定区域的空单元格个数和非空单元格个数
- 指针数组赋值问题