Excel 在指定单元格插入值

时间:2022-11-15 18:32:21
CApplication ExcelApp;
CWorkbooks books;
CWorkbook book;
CWorksheets sheets;
CWorksheet sheet;
CRange range;

/我现在建立一个10*10的range
lpDisp = sheet.get_Range(_variant_t("A1"), _variant_t("J10"));/
range.AttachDispatch(lpDisp);

//现在想插入表头
//比如sheet range("A1") 插入值为("姓名")

//现在这样实现
range.AttachDispatch(sheet.get_Cells());
range.AttachDispatch(range.get_Item(_variant_t(1),_variant_t(1)).pdispVal);
range.AttachDispatch(range.get_EntireRow());
_variant_t vRange;
vRange.vt = VT_DISPATCH;
vRange.pdispVal = range;
range.put_Value2(_variant_t("name"));
//插入的将会是一行name
//get_Item中若改为"A1","A1"则可编译通过,但有未知错误


求高手指点,在线等,不胜感激。

6 个解决方案

#1



VARIANT get_Item(VARIANT& RowIndex, VARIANT& ColumnIndex)
{
VARIANT result;
static BYTE parms[] = VTS_VARIANT VTS_VARIANT ;
InvokeHelper(0xaa, DISPATCH_PROPERTYGET, VT_VARIANT, (void*)&result, parms, &RowIndex, &ColumnIndex);
return result;
}


很明显了

#2


不好意思可能我没问清楚,请问我想直接写指定单元格怎么实现呢?比如A1写Name。用olesaWrite.PutElement
可以实现吗?怎么用呢?
引用 1 楼 ystemni 的回复:
C/C++ code

    VARIANT get_Item(VARIANT& RowIndex, VARIANT& ColumnIndex)
    {
        VARIANT result;
        static BYTE parms[] = VTS_VARIANT VTS_VARIANT ;
        InvokeHelper(0xaa, DIS……

#3


引用 2 楼 phoenixchen601 的回复:
不好意思可能我没问清楚,请问我想直接写指定单元格怎么实现呢?比如A1写Name。用olesaWrite.PutElement
可以实现吗?怎么用呢?

引用 1 楼 ystemni 的回复:

C/C++ code

VARIANT get_Item(VARIANT& RowIndex, VARIANT& ColumnIndex)
{
VARIAN……


自己写个函数,将“A1”之类的字符串解析成两个ID

#4


range有一个方法是SetItem
对range的操作和数组类似

#5



void put_Item(VARIANT& RowIndex, VARIANT& ColumnIndex, VARIANT& newValue)
{
static BYTE parms[] = VTS_VARIANT VTS_VARIANT VTS_VARIANT ;
InvokeHelper(0xaa, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, &RowIndex, &ColumnIndex, &newValue);
}



put_Item赋值也是一样的,用的ID

#6


感谢大家的帮助,结贴结贴。

#1



VARIANT get_Item(VARIANT& RowIndex, VARIANT& ColumnIndex)
{
VARIANT result;
static BYTE parms[] = VTS_VARIANT VTS_VARIANT ;
InvokeHelper(0xaa, DISPATCH_PROPERTYGET, VT_VARIANT, (void*)&result, parms, &RowIndex, &ColumnIndex);
return result;
}


很明显了

#2


不好意思可能我没问清楚,请问我想直接写指定单元格怎么实现呢?比如A1写Name。用olesaWrite.PutElement
可以实现吗?怎么用呢?
引用 1 楼 ystemni 的回复:
C/C++ code

    VARIANT get_Item(VARIANT& RowIndex, VARIANT& ColumnIndex)
    {
        VARIANT result;
        static BYTE parms[] = VTS_VARIANT VTS_VARIANT ;
        InvokeHelper(0xaa, DIS……

#3


引用 2 楼 phoenixchen601 的回复:
不好意思可能我没问清楚,请问我想直接写指定单元格怎么实现呢?比如A1写Name。用olesaWrite.PutElement
可以实现吗?怎么用呢?

引用 1 楼 ystemni 的回复:

C/C++ code

VARIANT get_Item(VARIANT& RowIndex, VARIANT& ColumnIndex)
{
VARIAN……


自己写个函数,将“A1”之类的字符串解析成两个ID

#4


range有一个方法是SetItem
对range的操作和数组类似

#5



void put_Item(VARIANT& RowIndex, VARIANT& ColumnIndex, VARIANT& newValue)
{
static BYTE parms[] = VTS_VARIANT VTS_VARIANT VTS_VARIANT ;
InvokeHelper(0xaa, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, &RowIndex, &ColumnIndex, &newValue);
}



put_Item赋值也是一样的,用的ID

#6


感谢大家的帮助,结贴结贴。