C++ builder想利用ole操作将excel的内容导入数据库
已经可以实现一个单元格一个单元格取值然后写入数据库
可是如果大数据的话这样效率很低
所以就想利用range操作将区域内的值读取入二维数组
可是不知道怎样代码实现
range需要一个variant的二维数组去取值
可是菜鸟对variant型二维数组一脸懵逼
忘各位老师解答
求妖哥赐教
乱七八糟 大概按照意思打了几行代码 忘各位指点迷津
Variant excelApp = CreateOleObject("Excel.Application");
String xlsFile = L"E:\\ha.xlsx";
excelApp.OlePropertyGet("Workbooks").OleFunction("open", WideString(xlsFile));
excelApp.OlePropertySet("Visible", True);
Variant workbook = excelApp.OlePropertyGet("ActiveWorkBook");
Variant sheet = workbook.OlePropertyGet("ActiveSheet");
String rangeText = L"A1:E17";
Variant range = sheet.OlePropertyGet("Range", WideString(rangeText));
//range.PG("Rows",1).PG("Value", 1234);
int col = range.OlePropertyGet("Columns").OlePropertyGet("Count");//获取所选range的列数
int row = range.OlePropertyGet("Rows").OlePropertyGet("Count"); //获得所选range的行数
SAFEARRAYBOUND sab[2]; //定义一个二维数组
sab[0].cElements = col;
sab[0].lLbound = 0;
sab[1].cElements = row;
sab[1].lLbound = 0;
SAFEARRAY* psa = SafeArrayCreate( VT_UI1, sizeof(sab)/sizeof(SAFEARRAYBOUND), sab);
Variant varChunk;
varChunk.vt = VT_ARRAY|VT_UI1; //数组类型
varChunk.parray = psa;
varChunk=range.PG("Value");
psa=varChunk.parray;
BYTE *buf;
SafeArrayAccessData(psa, (void **)&buf);//安全指针
SafeArrayUnaccessData(psa);
workbook.PR("Close");
excelApp.FN("Quit");
varinat型二维数组怎么定义 怎么把range的值赋给该数组 赋完该如何取值??