Форум программистов, компьютерный форум, киберфорум
C++/CLI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/35: Рейтинг темы: голосов - 35, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 02.05.2013
Сообщений: 25

CLR работа с Word

02.05.2013, 23:11. Показов 7256. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, понимаю что не в ту тему ( не нашел нужной) работаю с CLR , есть необходимость передать из DataGreadView в Word входные данные и выходные(желательно в таблице), график, как это сделать ? если есть у кого статья дайте пожалуйста кроме RSDN не нашел, очень нужны примеры .Работаю в Studio 2010.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.05.2013, 23:11
Ответы с готовыми решениями:

Работа с указателями в C++ CLR
Объясню коротко. В коде вызываю функцию qs (s1, 0, s1len); Получаю ошибку: error C2664: qs: невозможно преобразовать параметр 1 из...

STL/CLR
Помогите разобраться с простым кодом. Хочу закинуть все буквы из строки в список но ничего не выходит.#include "stdafx.h" ...

clr:oldSyntax
Кто если знает есть такая микросхема FT232, преобразователь интерфейсов из USB в UART. На официальном сайте есть пример, который (по моей...

2
130 / 15 / 6
Регистрация: 05.08.2013
Сообщений: 285
01.11.2013, 18:01
Привет)Поздновато отвечаю, но может кому-то ещё пригодится.
Я работаю с Word так.
1)Создаю проект WinForms
2)Добавляю ссылку на библиотеку Microsoft Word 11 Object Library (Свойства проекта->Добавить новую ссылку).
Microsoft Word 11 Object Library - это если у Вас Word 2003, при других версия Word'а версия будет другая, к примеру
Microsoft Word 12 Object Library
3)Подключить using namespace System::Reflection;
4)Код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//неправильно здесь писать так auto Word1 =
                //gcnew Microsoft::Office::Interop::Word::Application();
                // Инициализируем два строковых массива, которыми заполним таблицу
                array<String^> ^ W = {"A", "B", "C",
                "D", "E",
                "F", "G",
                "H", "I"};
                array<String^> ^ N = {"1", "2",
                "3", "4", "5",
                "6", "7",
                "8", "9"};
                                // Создаем новый экземпляр класса Word::_Application:
                auto Word1 =gcnew Word::Application();
                //сделаем невидимым
                Word1->Visible = false;
                // Переменная с "пустым" значением, для того, чтобы ставить значения по умолчанию:
                auto t = Type::Missing;
                // Открываем новый документ MS Word:
                auto Document = Word1->Documents->Add(t, t, t, t);
                // Вводим текст в документ MS WORD с текущей позиции:
                Word1->Selection->TypeText("ТАБЛИЦА ДАННЫХ");
                // Параметр, указывающий, показывать ли границы ячеек:
                System::Object ^ t1 = Word::WdDefaultTableBehavior::wdWord9TableBehavior;
                // Параметр, указывающий будет ли приложение Word автоматически
                // изменять размер ячеек в таблице для подгонки содержимого:
                System::Object ^ t2 = Word::WdAutoFitBehavior::wdAutoFitContent;
                // Создаем таблицу из 9 строк и 2 столбцов:
                Word1->ActiveDocument->Tables->Add(Word1->Selection->Range, 9, 2, t1, t2);
                // Заполнять ячейки таблицы можно так:
                for (int i = 1; i <= 9; i++) {
                    Word1->ActiveDocument->Tables[1]->Cell(i, 1)->default->InsertAfter(W[i]);
                    Word1->ActiveDocument->Tables[1]->Cell(i, 2)->default->InsertAfter(N[i]);
                }
                // Назначаем единицы измерения в документе приложения MS Word:
                Object ^ t3 = Word::WdUnits::wdLine;
                // Параметр, указывающий на девятую строку в документе MS Word:
                Object ^ string9 = 9;
                // Перевести текущую позицию (Selection) за пределы таблицы,
                Word1->Selection->MoveDown(t3, string9, t);
                // Вставим ещё картинку:
                Word1->Selection->Range->InlineShapes->AddPicture("name.jpg",t,t,t);
                                /*
                                         Я присвою постоянное текстовое значение, но имя можно брать откуда угодно 
                                         К примеру filename=saveFileDialog1->FileName - имя из элемента формы saveFileDialog
*/
                                //переменная-объект для имени, под которым мы хотим сохранить документ Word
                Object ^ Name = "good.doc";
                Word1->ActiveDocument->SaveAs(Name, t, t, t, t, t, t, t, t, t, t, t, t, t, t, t);
5)После создания экземпляра класса Word::_Application становятся доступны те-же методы, что и в VBA.
Т.е. вы можете записать макрос, а потом посмотрев его, вставить в ваш код C++/CLI, с небольшими изменениями (доступ к методам ->) и всё заработает.
Основой мне послужила книга Зиборова В. В.
MS Visual C++ 2010 в среде .NET. Библиотека программиста.

Добавлено через 14 минут
А график можно создать при помощи методов System:rawing
C++
1
2
3
4
5
//цвет и толщина кисти
Pen^ redPen = gcnew Pen( Color::Red,1.0f );
Bitmap ^gr_akf=gcnew Bitmap(800, 600);
//доступ к методам Graphics
Graphics ^g_a=Graphics::FromImage(gr_akf);
Заполнить
C++
1
2
3
4
 Point point1 = Point(0,0);
    Point point2 = Point(100,100);
        //нарисуем линию
    g_a->DrawLine(redPen,point1,point2);
Сохранить
C++
1
2
//я выбрал формат jpeg
gr_akf->Save("name.jpg",Imaging::ImageFormat::Jpeg);
И вставить в Word, не забыв
C++
1
2
        //удаление рисунка из памяти
    delete gr_akf;delete g_a;
3
0 / 0 / 1
Регистрация: 24.12.2020
Сообщений: 41
27.02.2022, 16:09
Цитата Сообщение от fier Посмотреть сообщение
auto Word1 =gcnew Word::Application();
Не создается таким способом
А способом, что вы назвали неправильным
Цитата Сообщение от fier Посмотреть сообщение
//неправильно здесь писать так auto Word1 =
                //gcnew Microsoft::Office::Interop::Word::Applic ation();
создают в большинстве случаев, но у меня выходит ошибка:
не удается создать объект класса интерфейса CLI

Добавлено через 58 секунд
fier, как можно исправить, вроде все так...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.02.2022, 16:09
Помогаю со студенческими работами здесь

0xc000007b в CLR
Есть классы описанные в cpp и h файлах (ссылка). h файлы добавлены директивой #include в главный cpp (CLR console application). Классы...

Ошибка инициализации CLR
Выполняю код: HRESULT hr; ICLRMetaHost *pMetaHost = nullptr; ICLRRuntimeHost *pRuntimeHost = nullptr; ICLRRuntimeInfo...

Получение даты в CLR
Привет, хотел получить сегодняшнюю дату и вывести её в label. подключил #include &lt;atltime.h&gt; хотел забрать int...

Связывание форм в CLR
Есть две формы Form1 и Form2. В Form1 есть меню (menuStrip). Как сделать, чтобы при нажати по одному из элементов меню запускалась Form2?

Перечисления в CLR проектах
Начал проходить Visual C++ 2010 Хортона,во второй главе рассказывается о возможностях перечислений enum class. Но когда я попытался...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru