最近遇到一个问题,如何处理一个表格
这个表格是word或是excel格式的文档
在每一个表格中,都存在一个字段,就是顺序的序号,如果从中间删掉一条记录(就是说,删掉表格中的一行),不知道大家有什么好的想法,还请赐教。如果能够提供源代码参考,愿意加倍给分。

解决方案 »

  1.   

    用COM接口来解决吧
    把OFFICE提供的接口都导到程序里来利用自动化解决
    自动化技术实际应用
    1、 可选参数的赋值问题
    var.vt=VT_ERROR;
    var.scode=DISP_E_PARAMNOTFOUND;
    2、 讲解WORD自动化对象模型及相应的内容
    a) 给文档增加内容
    _Application app;
    app.CreateDispatch("Word.application");
    app.SetVisible(true); Documents docs;
    _Document doc;
    docs=app.GetDocuments();
    CComVariant var;
    var.vt=VT_ERROR;
    var.scode=DISP_E_PARAMNOTFOUND;
    doc=docs.Add(&var,&var,&var,&var);
    Paragraphs phs=doc.GetParagraphs();
    Paragraph ph=phs.Item(1);
    Range rng=ph.GetRange();
    rng.SetText("Hello world!");
    b) 增加一个页眉的内容
    Sections scts=rng.GetSections();
    Section sct=scts.Item(1);
    HeadersFooters hdfts;
    hdfts=sct.GetHeaders();
    HeaderFooter hdft;
    hdft=hdfts.Item(1);
    rng=hdft.GetRange();
    rng.SetText("Hello !");
    3、 讲解Excel自动化对象模型及相关的内容
    ::CoInitialize(NULL);
    _Application app;
       
    if(!app.CreateDispatch("Excel.Application", NULL))
    {
       AfxMessageBox("不能启动Excel!");
       return;
    }
    Workbooks Books = app.GetWorkbooks();
    //注意:可选变量的赋值问题
    CComVariant var;
    var.vt=VT_ERROR;
    var.scode=DISP_E_PARAMNOTFOUND;
    //以下的var为Add方法的可选变量
    _Workbook Book = Books.Add(var);
    //_Workbook Book=Books.Open("d:\\1.xls",var,var,var,var,var,var,var,var,var,var,var,var);
    /*
    Worksheets Sheets = Book.GetWorksheets();
    _Worksheet Sheet = Sheets.GetItem(COleVariant((short)1));
    Range Cells,Cell;//注意单元格集合与单元格都是一个范围对象
    Cells=Sheet.GetCells();//取单元格集合
    Cells.SetItem(CComVariant(1),CComVariant(1),CComVariant("Hello"));//设置单元格的内容
    //以下是取单元格的内容部分
    CComVariant CellText;
    //方法一:直接从Sheet对象中取值,不过此时注意使用的参数只能是"A1"这种类型
    //Cell=Sheet.GetRange(CComVariant("A1"),CComVariant("A1"));
    //CellText=Cell.GetText();
    //方法二:从得到的单元格集合中取出想要的单元格,再取其值,此时的参数就可以用Index索引号了
    Cell=Cells.GetItem(CComVariant(1),CComVariant(1)).pdispVal;
    CellText=Cell.GetText();
    */
    app.SetVisible(TRUE);
    Sleep(2000);
    app.Quit();
    1、 讲解DMO对象的自动化
    USES_CONVERSION;
    _SQLServerPtr SqlSrv;
    _DatabasePtr SqlDb;
    CoInitialize(NULL);
    try
    {
    SqlSrv.CreateInstance(__uuidof(SQLServer));
    SqlSrv->Connect(_variant_t("MMSERVER"),_variant_t("sa"),_variant_t(""));
    SqlDb.CreateInstance(_uuidof(Database));
    SqlDb=SqlSrv->Databases->Item(_variant_t("MM"));
    }
    catch(_com_error &e)
    {
    AfxMessageBox(W2A(e.Description()));
    exit(0);
    return ;
    }
    QueryResultsPtr Res;
    CString sqlstr;
    sqlstr="select * from xt_mmcode";
    Res=SqlDb->ExecuteWithResults(_bstr_t(sqlstr));
    long rows,cols;
    rows=Res->Rows;
    cols=Res->Columns;
    CString ColName,VarName;
    ColName=(char*)Res->GetColumnName(1);
    VarName=(char*)Res->GetColumnString(1,1);
    VarName.TrimRight();
      

  2.   

    关键字 操作Excel
    原作者姓名 相生昌介绍
    用VC操作Excel读者评分 11 评分次数 3 正文
    先用ClassWizard从Office目录中导入Excel9.olb,并添加相就的类到VC中
    _Application *ExcelApp = new _Application;ExcelApp->CreateDispatch("excel.application");//设置为显示
    ExcelApp->SetVisible(TRUE);
    //得到WorkBooks
    Workbooks  ExcelBook=ExcelApp->GetWorkbooks();
    Sheets     ExcelSheet=ExcelBook.Add(vtOptional1);
    _Workbook  workBook;
    _Worksheet workSheet;
    Range    range;
    workBook.AttachDispatch(ExcelApp->GetApplication());
    ExcelSheet=workBook.GetSheets();////////////////////////////////////////////
    workSheet=ExcelSheet.GetItem(COleVariant((short)1));
    workSheet.Activate();
    Range myallrange=workSheet.GetRange(COleVariant("A1"),COleVariant("E1"));
    //myallrange.BorderAround(COleVariant((short)1),(long)2,(long)1,vtOptional);
    myallrange.SetHorizontalAlignment(COleVariant((short)3));
    myallrange.Merge(COleVariant((short)1));
    myallrange.SetValue(COleVariant("这里写标题"));nRowCount=m_grid.GetRows();
    nColCount=m_stockgrid.GetCols();
    Range myrange=workSheet.GetRange(COleVariant("A1"),COleVariant("A1"));
    myrange.SetValue(COleVariant("单元格内容"));
    myrange.BorderAround(COleVariant((short)1),(long)2,(long)1,vtOptional);
    myrange.SetHorizontalAlignment(COleVariant((short)3));
    myrange.SetVerticalAlignment(COleVariant((short)2));
    myrange.SetColumnWidth(COleVariant((short)15));delete ExcelApp;