Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Borland C++ Builder/Turbo C++ Explorer > Выгрузка в Excel из StringGrid


Автор: TATTKA 30.05.16, 17:03
Ребята, снова к вам! :oops:
очень нужна помощь! :'(
Пытаюсь сделать выгрузку в Еxcel, но так чтобы была возможность открывать уже существующий документ, вот что нарыла сейчас, здесь все работает, но создается новый файл, как добавить еще и открытие существующего??

Очень-очень надо! Помогите, пожалуйста! :'(
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    Variant app, books, book, sheet, Rang, vCell;
      app = CreateOleObject("Excel.Application");
      app.OlePropertySet("Visible",true);
      books = app.OlePropertyGet("Workbooks");
      books.OleProcedure("Add");
      book = books.OlePropertyGet("Item",1);
      sheet = book.OlePropertyGet("WorkSheets",StrToInt(ComboBox2->Text));
    //Noi?ie?iaaee e caienaee aa?eaioiue iannea ec StringGrid
    String S;
      const int bounds[4] = {0, Form1->StringGrid2->RowCount, 0, Form1->StringGrid2->ColCount};
      Variant vData = VarArrayCreate(bounds, 3, varVariant);
      for(int i = 0; i <Form1-> StringGrid2->RowCount; i++)
        {
          if((Form1->StringGrid2->Cells[0][i]).IsEmpty()) S = "";
          else S = Form1->StringGrid2->Cells[0][i];
          vData.PutElement(S, 0, i);
        }
     
      for(int i = 0; i <Form1-> StringGrid2->RowCount; i++)
        {
          if((Form1->StringGrid2->Cells[3][i]).IsEmpty()) S = "";
          else S = Form1->StringGrid2->Cells[3][i];
          vData.PutElement(S, 1, i);
              if ( CheckBox1->Checked==true ) {
             }
        }
             vData.PutElement(Edit1->Text, StrToInt(ComboBox3->Text), Form1->StringGrid2->RowCount);
      Rang = sheet.OlePropertyGet("Range",sheet.OlePropertyGet("Cells",StrToInt(ComboBox3->Text),StrToInt(ComboBox4->Text)),
             sheet.OlePropertyGet("Cells",(Form1->StringGrid2->RowCount)+StrToInt(ComboBox3->Text),(Form1->StringGrid2->ColCount)+StrToInt(ComboBox4->Text)));
      Rang.OlePropertySet("WrapText", false);
      Rang.OlePropertySet("Value",vData);
    //Ioi?ieyai oe?eio noieaoia
      for(int i = StrToInt(ComboBox4->Text)-1; i < (Form1-> StringGrid2->ColCount)+StrToInt(ComboBox4->Text)-1; i++)
       {
         Variant Clmn = sheet.OlePropertyGet("Cells", 1, i + 1).OlePropertyGet("EntireColumn");
         Clmn.OleFunction("AutoFit");
       }
    //Ioi?ieyai au?aaieaaiea e o?eoo oaiee
      vCell = sheet.OlePropertyGet("Range",sheet.OlePropertyGet("Cells",1,1),sheet.OlePropertyGet("Cells",1,Form1->StringGrid2->ColCount));
      vCell.OlePropertySet("HorizontalAlignment",-4108);
      vCell.OlePropertyGet("Font").OlePropertySet("Bold",true);

Автор: Bas 31.05.16, 05:38
Работа с Excel из C++ Builder'a

Автор: TATTKA 31.05.16, 15:48
Bas, Спасибо! все получилось!

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)