Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Перенос таблицы из Word в Excel(cpp)


Автор: seventy 4.4.2007, 21:12
Как реализовать на Builder`e C++(или на худой конец на делфях) перенос таблицы?

Автор: mihanik 5.4.2007, 07:02
Не знаю, но наверное можно использовать похожий приём, взятый из бейсика.

Сначала создаём объекты - экземпляр Excel и экземпляр Word

Код

Set ExlApp = CreateObject( "Excel.Application" )
Set WrdApp = CreateObject( "Word.Application" )


А потом уже обращаемся к пространству имён этих объектов.
Описание пространства имён (очень подробное) можно найти в хелпах соответствующих программ.

Тебя интересуют объекты к которым можно обащаться в Excel и Word?

Добавлено через 5 минут и 5 секунд
Заслать в буфер обмена кусок таблицы из Excel можно так...


Копируем с первого листа в буфер обмена блок ячеек A1:A3

Код

    ExlApp.Worksheets(1).Range("A1:A3").Select
    ExlApp.Selection.Copy


А в Word ты берёшь всё из буфера обмена и вставляешь на лист.

Автор: seventy 5.4.2007, 21:16
2mihanik спасибо за ответ. только мне надо из ворда в excel переносить. и еще - загвоздка в том что инфу об этом найти трудно - скрепка не говорит, редактор бэйсика молчит, в МСДНе нету... может есть что в онлайне?

Автор: mihanik 6.4.2007, 07:28
Цитата(seventy @  5.4.2007,  21:16 Найти цитируемый пост)
редактор бэйсика молчит


Гм...
Запусти ворд.
Зайди в редактор бейсика (Alt + F11).
В меню есть Help / "Справка: Microsoft Visual Basic    F1"

Там дано хорошее описание...
Почитай!!!

Добавлено через 2 минуты
В ворде я не силён, но, по-моему, тебе нужен Table Object

Описание этого объекта в справке более чем подробное.
Правда, на английском...  smile

Добавлено через 4 минуты и 21 секунду
Вот пример работы с таблицей в ворде.
Взял прямым копированием из хелпа.

Цитата

Returns a Cell object that represents a cell in a table.

expression.Cell(Row, Column)
expression    Required. An expression that returns a Table object.

Row    Required Long. The number of the row in the table to return. Can be an integer between 1 and the number of rows in the table.

Column    Required Long. The number of the cell in the table to return. Can be an integer between 1 and the number of columns in the table.

Example
This example creates a 3x3 table in a new document and inserts text into the first and last cells in the table.

Код

Dim docNew As Document
Dim tableNew As Table

Set docNew = Documents.Add
Set tableNew = docNew.Tables.Add(Selection.Range, 3, 3)

With tableNew
    .Cell(1,1).Range.InsertAfter "First cell"
    .Cell(tableNew.Rows.Count, _
        tableNew.Columns.Count).Range.InsertAfter "Last Cell"
End With
  
This example deletes the first cell from the first table in the active document.

If ActiveDocument.Tables.Count >= 1 Then
    ActiveDocument.Tables(1).Cell(1, 1).Delete
End If



Автор: seventy 7.4.2007, 00:52
Если кому еще понадобится - рабочий код САБЖа в билдере
Код

    Variant Word, Document, Table, Cell, a;

    const char* file = "c:\\word.doc";//file with table

    Word = CreateOleObject("Word.Application");
    Word.OlePropertySet("Visible", false);
    a = Word.OlePropertyGet("Documents").OleFunction("Open",file);
    Document = Word.OlePropertyGet("Documents").OleFunction("Item", 1);
    Document.OleProcedure("Select");
    Word.OlePropertyGet("Selection").OleProcedure("Copy");

    Variant v0, v1, XL;
    XL = CreateOleObject("Excel.Application");
    v0 = XL.OlePropertyGet("Workbooks");
    v0.OleProcedure("Add");
    v1 = v0.OlePropertyGet("Item", 1).OlePropertyGet("Worksheets").OlePropertyGet("Item", 1);
    XL.OlePropertySet("Visible", true);
    v1.OleProcedure("Paste");

    XL.OleProcedure("Quit");
    Word.OleProcedure("Quit");

Автор: mihanik 7.4.2007, 22:04
Молодец, что отписАлся о решении проблемы.

Помечу решённым.
 smile 

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