Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.95/65: Рейтинг темы: голосов - 65, средняя оценка - 4.95
6 / 6 / 3
Регистрация: 29.08.2016
Сообщений: 107

Экспорт данных из связанных в DataGridView таблиц в шаблон Word

12.05.2017, 16:29. Показов 13422. Ответов 37

Студворк — интернет-сервис помощи студентам
Добрый день!

У меня возник вопрос как экспортировать данные из таблицы dataGridView в Word. В данной таблице у меня 15 столбцов и их необходимо экспортировать в Word.
пробую код но он открывает файл и создает пустую первую строку таблицы без заголовка. Мне же нужно чтобы каждой записи соответствовал заголовок.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
                int columns = 15;
                int rows = dataGridView2.RowCount;
 
            Word.Application application = new Word.Application();
            Object missing = Type.Missing;
            application.Documents.Add(ref missing, ref missing, ref missing, ref missing);
            Word.Document document = application.ActiveDocument;
            Word.Range range = application.Selection.Range;
            Object behiavor = Word.WdDefaultTableBehavior.wdWord9TableBehavior;
            Object autoFitBehiavor = Word.WdAutoFitBehavior.wdAutoFitFixed;
            document.Tables.Add(range, rows, columns, ref behiavor, ref autoFitBehiavor);
            for (int j = 1; j < rows; j++)
                for (int i = 1; i < columns; i++)
                {                    
                    document.Tables[1].Cell(j+1, i+1).Range.Text = dataGridView2[i, j].Value.ToString();
                }
            application.Visible = true;

Просьба подсказать, а то многое искал но что то не получается .
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.05.2017, 16:29
Ответы с готовыми решениями:

Экспорт данных из DataGridView в шаблон Word
Не получается реализовать экспорт данных с DataGridView. В DataGridView 7 колонок , создал таблицу в ворде тоже 7 колнок. Но С# выдает...

Экспорт данных в шаблон Word
Приветствую форумчане! Помогите мне пожалуйста! Скоро защита диплома( На форме имеется textBox и comboBox и кнопка button. Я пытаюсь по...

Экспорт данных из TextBox в шаблон Word
на форме в текcтовых поля вводится данные и при нажатии кнопки открывается шаблон документа word , где вставляется в нужном месте. ...

37
 Аватар для ViterAlex
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
07.07.2017, 11:56
Студворк — интернет-сервис помощи студентам
Закрашивает нечётные строки
C#
1
2
3
4
for (int i = 1; i < tbl.Rows.Count + 1; i += 2)
{
    tbl.Rows[i].Shading.BackgroundPatternColor = 0x996666;//wdColorBlueGray 
}
https://msdn.microsoft.com/ru-... -reference
0
6 / 6 / 3
Регистрация: 29.08.2016
Сообщений: 107
07.07.2017, 12:20  [ТС]
Цитата Сообщение от ViterAlex Посмотреть сообщение
C#
1
2
3
4
for (int i = 1; i < tbl.Rows.Count + 1; i += 2)
{
 tbl.Rows[i].Shading.BackgroundPatternColor = 0x996666;//wdColorBlueGray 
}
а можете подсказать как можно сделать что бы могло получиться как на рисунке. строки берутся из DGV, и соответственно у них может быть разное расположение.
Миниатюры
Экспорт данных из связанных в DataGridView таблиц в шаблон Word  
0
 Аватар для ViterAlex
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
07.07.2017, 12:27
закрашивай по конкретным номерам строк
0
6 / 6 / 3
Регистрация: 29.08.2016
Сообщений: 107
07.07.2017, 12:29  [ТС]
а как получить эти номера срок, чтобы при экспорте программа считывала и закрашивала их.
0
 Аватар для ViterAlex
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
07.07.2017, 14:43
AlekseyS_35, это уж тебе решать, по каким признакам закрашивать строку.
0
6 / 6 / 3
Регистрация: 29.08.2016
Сообщений: 107
07.07.2017, 15:15  [ТС]
Цитата Сообщение от ViterAlex Посмотреть сообщение
это уж тебе решать, по каким признакам закрашивать строку.
Это то мне понятно но есть какой-то способ, чтобы если заполнена ячейка в первом столбце вся строка закрашивалась, а если нет то оставалась прежней.
0
 Аватар для ViterAlex
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
08.07.2017, 12:46
AlekseyS_35, можно перед экспортом составить список номеров строк, которые нужно закрашивать.
C#
1
2
3
4
5
6
7
8
9
var rowsToColor = new List<int>();
foreach (DataGridViewRow row in _dataGridView.Rows)
{
    if (row.IsNewRow) continue;
    if (row.Cells[0].Value != null)//проверка значения в первом столбце
    {
        rowsToColor.Add(_dataGridView.Rows.IndexOf(row) + 1);
    }
}
А дальше использовать этот список, чтобы закрасить строки в таблице
C#
1
2
3
4
foreach (int rowNum in rowsToColor)
{
 tbl.Rows[rowNum].Shading.BackgroundPatternColor = 0x996666;//wdColorBlueGray 
}
0
6 / 6 / 3
Регистрация: 29.08.2016
Сообщений: 107
12.07.2017, 17:46  [ТС]
Цитата Сообщение от ViterAlex Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
var rowsToColor = new List<int>();
foreach (DataGridViewRow row in _dataGridView.Rows)
{
 if (row.IsNewRow) continue;
 if (row.Cells[0].Value != null)//проверка значения в первом столбце
 {
 rowsToColor.Add(_dataGridView.Rows.IndexOf(row) + 1);
 }
}
А дальше использовать этот список, чтобы закрасить строки в таблице
C#
1
2
3
4
foreach (int rowNum in rowsToColor)
{
 tbl.Rows[rowNum].Shading.BackgroundPatternColor = 0x996666;//wdColorBlueGray 
}
подскажи в чем может быть загвоздка у меня данный код почему то все строки закрашивает.

и еще такой вопрос реально ли цвет строки dataGridView в экспортируемую таблицу.

заранее спасибо.
0
6 / 6 / 3
Регистрация: 29.08.2016
Сообщений: 107
13.07.2017, 17:33  [ТС]
Доброго дня/вечера

подскажите кто сможет у меня при экспорте DGV в шаблон Word, в первом столбце есть пустые строки, т. к описание данных строк соответствует первой строке. при экспорте все строки белые. мне же нужно чтобы первая строка записи имела цвет к примеру светло серый, а строки с что соответствуют значению первой строки белые.
пробую применить код но он меняет цвет у всей таблицы.
C#
1
2
3
4
5
6
7
8
9
                        
 if (worddoc.Tables[1].Columns[1] == null)
   {
       worddoc.Tables[1].Cell(j, 2).Shading.BackgroundPatternColor = WdColor.wdColorGray15;
    }
 else
    {
       worddoc.Tables[1].Shading.BackgroundPatternColor = WdColor.wdColorAqua;
     }
подскажите как можно реализовать данную проблему.
0
 Аватар для ViterAlex
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
14.07.2017, 01:37
AlekseyS_35, лучше один раз увидеть, чем что раз прочитать. Сделай скриншот своего dgv и покажи как должна выглядеть соответствующая таблица в Word.
0
6 / 6 / 3
Регистрация: 29.08.2016
Сообщений: 107
14.07.2017, 08:08  [ТС]
В Word таблица должна выглядеть как на скриншоте, и по возможности контур таблицы должен быть полужирным.
Миниатюры
Экспорт данных из связанных в DataGridView таблиц в шаблон Word  
0
 Аватар для ViterAlex
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
14.07.2017, 20:08
Вот так это может выглядеть. Цвета настраиваются.
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
 
public static class DataGridViewExporter
{
    /// <summary>
    /// Фон заголовка таблицы
    /// </summary>
    public static Color HeaderColor { get; set; }
    /// <summary>
    /// Фон выделенной строки
    /// </summary>
    public static Color ShadeColor { get; set; }
 
    private static int[] _internalBorders = { -5, -6 };//wdBorderHorizontal, wdBorderVertical
    private static int[] _externalBorders = { -1, -2, -3, -4 };//wdBorderTop, wdBorderLeft, wdBorderBottom, wdBorderRight
 
    /// <summary>
    /// Перевод цвета RGB в понятный ворду
    /// </summary>
    public static int ToWordColor(this Color color)
    {
        return (color.B << 8 << 8) + (color.G << 8) + color.R;
    }
 
    public static void Export(dynamic doc, DataGridView dgv)
    {
        var shadedRows = GetShadedRowsIndices(dgv, 0);
        var rng = doc.Range();
        rng.Collapse(0);//wdCollapseEnd
        var table = doc.Tables.Add(rng, 1, dgv.ColumnCount);
        var headerRow = table.Rows[1];
        //Заголовки столбцов
        for (var i = 0; i < dgv.Columns.Count; i++)
        {
            DataGridViewColumn column = dgv.Columns[i];
            headerRow.Cells[i + 1].Range.Text = column.HeaderText;
        }
 
        FormatHeaderRow(headerRow);
        //Заполнение таблицы
        foreach (DataGridViewRow row in dgv.Rows)
        {
            if (row.IsNewRow) continue;
            var newRow = table.Rows.Add();
            FormatRow(newRow);
            FillRow(row, newRow);
        }
 
        //Выделение цветом нужных строк
        foreach (var row in shadedRows)
        {
            //+2 потому что в ворде нумерация начинается с 1 плюс 1 строка заголовка.
            table.Rows[row + 2].Borders[-1].LineStyle = 1; //wdLineStyleSingle
            table.Rows[row + 2].Borders[-1].LineWidth = 12; //wdLineWidth150pt
 
            table.Rows[row + 2].Borders[-3].LineStyle = 1; //wdLineStyleSingle
            table.Rows[row + 2].Borders[-3].LineWidth = 6; //wdLineWidth075pt
 
            table.Rows[row + 2].Shading.BackgroundPatternColor = ShadeColor.ToWordColor();
        }
 
        //границы таблицы
        foreach (var border in _externalBorders)
        {
            table.Borders[border].LineStyle = 1; //wdLineStyleSingle
            table.Borders[border].LineWidth = 12; //wdLineWidth150pt
        }
        table.Borders[-6].LineStyle = 1; //wdLineStyleSingle
        table.Borders[-6].LineWidth = 12; //wdLineWidth150pt
    }
 
    //Форматирование заголовка таблицы
    private static void FormatHeaderRow(dynamic row)
    {
        row.Shading.BackgroundPatternColor = HeaderColor.ToWordColor();
        row.Range.ParagraphFormat.Alignment = 1; //wdAlignParagraphCenter
        foreach (var border in _externalBorders)
        {
            row.Borders[border].LineStyle = 1; //wdLineStyleSingle
            row.Borders[border].LineWidth = 12; //wdLineWidth150pt
        }
    }
 
    //Форматирование обычной строки. Нижняя и верхняя граница — тонкие
    private static void FormatRow(dynamic row)
    {
        row.Borders[-1].LineStyle = 1; //wdLineStyleSingle
        row.Borders[-1].LineWidth = 6; //wdLineWidth075pt
 
        row.Borders[-3].LineStyle = 1; //wdLineStyleSingle
        row.Borders[-3].LineWidth = 6; //wdLineWidth075pt
        row.Shading.BackgroundPatternColor = 0xffffff;
 
        //Границы ячеек в первом столбце
        row.Cells[1].Borders[-3].LineStyle = 0; //wdLineStyleNone
        row.Cells[1].Borders[-1].LineStyle = 0; //wdLineStyleNone
 
        row.Cells[2].Range.ParagraphFormat.Alignment = 0;//wdAlignParagraphLeft
    }
 
    private static void FillRow(DataGridViewRow row, dynamic tableRow)
    {
        foreach (DataGridViewCell cell in row.Cells)
        {
            tableRow.Cells[cell.ColumnIndex + 1].Range.Text = cell.Value ?? string.Empty;
        }
    }
    //индексы строк, которые нужно закрасить
    private static List<int> GetShadedRowsIndices(DataGridView dgv, int columnIndex)
    {
        return dgv.Rows.Cast<DataGridViewRow>().Where(r => r.Cells[columnIndex].Value != null).Select(r => r.Index).ToList();
    }
}
Использование:
C#
1
2
3
DataGridViewExporter.HeaderColor = Color.DarkGray;
DataGridViewExporter.ShadeColor = Color.BurlyWood;
DataGridViewExporter.Export(_doc, dgv);
Миниатюры
Экспорт данных из связанных в DataGridView таблиц в шаблон Word  
0
 Аватар для ViterAlex
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
15.07.2017, 00:11
ещё один вариант через OpenXml, намного быстрее и не зависит от офиса.
Кликните здесь для просмотра всего текста
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Windows.Forms;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
 
public class DataGridViewExporter
{
    private DataGridView _dgv;
    private IEnumerator<int> _shadeEnumerator;
 
    private static readonly BorderType[] _tableBorders =
    {
        new TopBorder
        {
            Val = BorderValues.Single,
            Color = "auto",
            Size = 12U,
            Space = 0U
        },
        new LeftBorder
        {
            Val = BorderValues.Single,
            Color = "auto",
            Size = 12U,
            Space = 0U
        },
        new BottomBorder
        {
            Val = BorderValues.Single,
            Color = "auto",
            Size = 12U,
            Space = 0U
        },
        new RightBorder
        {
            Val = BorderValues.Single,
            Color = "auto",
            Size = 12U,
            Space = 0U
        }
    };
 
    public System.Drawing.Color HeaderColor { get; set; }
    public System.Drawing.Color ShadeColor { get; set; }
 
    public void Export(string filePath, DataGridView dgv)
    {
        _dgv = dgv;
        _shadeEnumerator = GetShadeEnumerator(_dgv, 0);
        _shadeEnumerator.MoveNext();
        CreatePackage(filePath);
    }
 
    private static string ToHex(System.Drawing.Color c)
    {
        return $"{c.R:X2}{c.G:X2}{c.B:X2}";
    }
 
    //индексы строк, которые нужно закрасить
    private static IEnumerator<int> GetShadeEnumerator(DataGridView dgv, int columnIndex)
    {
        return dgv.Rows.Cast<DataGridViewRow>().Where(r => r.Cells[columnIndex].Value != null).Select(r => r.Index)
                    .GetEnumerator();
    }
 
    private void GenerateMainDocumentPart1Content(MainDocumentPart mainDocumentPart)
    {
 
        Document doc = new Document
        {
            MCAttributes =
                                        new MarkupCompatibilityAttributes
                                        {
                                            Ignorable =
                                                "w14 w15 w16se wp14"
                                        }
        };
        #region NameSpaceDeclarations
 
        doc.AddNamespaceDeclaration("wp14", "http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing");
        doc.AddNamespaceDeclaration("w", "http://schemas.openxmlformats.org/wordprocessingml/2006/main");
        doc.AddNamespaceDeclaration("w14", "http://schemas.microsoft.com/office/word/2010/wordml");
        doc.AddNamespaceDeclaration("w15", "http://schemas.microsoft.com/office/word/2012/wordml");
        doc.AddNamespaceDeclaration("w16se", "http://schemas.microsoft.com/office/word/2015/wordml/symex");
 
        #endregion
 
        Body body = new Body();
 
        Table table = new Table();
 
        TableProperties tableProperties1 = new TableProperties();
 
        tableProperties1.Append(new TableBorders(_tableBorders));
 
 
        TableGrid tableGrid = new TableGrid();
        for (var i = 0; i < _dgv.ColumnCount; i++)
        {
            tableGrid.Append(new GridColumn());
        }
 
        table.Append(tableProperties1);
        table.Append(tableGrid);
 
        TableRow headerRow = new TableRow();
 
        #region Заполнение заголовка таблицы
 
        var headerProps = new TableCellProperties();
        headerProps.Append(
            new TableCellBorders//Границы у ячеек заголовка такие же как у всей таблицы
            {
                TopBorder = (TopBorder)_tableBorders[0].Clone(),
                LeftBorder = (LeftBorder)_tableBorders[1].Clone(),
                BottomBorder = (BottomBorder)_tableBorders[2].Clone(),
                RightBorder = (RightBorder)_tableBorders[3].Clone(),
            });
        headerProps.Append(new Shading
        {
            Val = ShadingPatternValues.Clear,
            Color = "auto",
            Fill = ToHex(HeaderColor)
        });
 
        foreach (DataGridViewColumn column in _dgv.Columns)
        {
            var cell = new TableCell();
 
 
            var paragraph = new Paragraph();
            var paragraphProps = new ParagraphProperties
            {
                Justification = new Justification
                {
                    Val = JustificationValues.Center
                }
            };
            var run = new Run();
            var text = new Text { Text = column.HeaderText };
            run.Append(text);
            paragraph.Append(paragraphProps);
            paragraph.Append(run);
 
            cell.Append((TableCellProperties)headerProps.Clone());
            cell.Append(paragraph);
 
            headerRow.Append(cell);
        }
        table.Append(headerRow);
 
        #endregion
 
        foreach (DataGridViewRow row in _dgv.Rows)
        {
            var newRow = new TableRow();
            var props = row.Cells[0].Value == null ? CellProperties() : ShadedCellProperties();
            foreach (DataGridViewCell dgvCell in row.Cells)
            {
                var cell = new TableCell();
                cell.Append(dgvCell.Value == null ? EmptyCellProperties() : (TableCellProperties)props.Clone());
                var paragraph = new Paragraph();
                var paragraphProps = new ParagraphProperties
                {
                    Justification = new Justification
                    {
                        Val = dgvCell.ColumnIndex == 1
                                                                    ? JustificationValues.Left
                                                                    : JustificationValues.Center
                    }
                };
                var run = new Run();
                var text = new Text { Text = dgvCell.Value?.ToString() ?? string.Empty };
                run.Append(text);
                paragraph.Append(paragraphProps);
                paragraph.Append(run);
 
                cell.Append(paragraph);
                newRow.Append(cell);
            }
            table.Append(newRow);
        }
 
        body.Append(table);
 
        doc.Append(body);
 
        mainDocumentPart.Document = doc;
    }
    /// <summary> Оформление обычной ячейки </summary>
    private static TableCellProperties CellProperties()
    {
        var result = new TableCellProperties();
        result.Append(
            new TableCellBorders
            {
                TopBorder = new TopBorder
                {
                    Val = BorderValues.Single,
                    Color = "auto",
                    Size = 6U,
                    Space = 0U
                },
                LeftBorder = new LeftBorder
                {
                    Val = BorderValues.Single,
                    Color = "auto",
                    Size = 12U,
                    Space = 0U
                },
                BottomBorder = new BottomBorder
                {
                    Val = BorderValues.Single,
                    Color = "auto",
                    Size = 6U,
                    Space = 0U
                },
                RightBorder = new RightBorder
                {
                    Val = BorderValues.Single,
                    Color = "auto",
                    Size = 12U,
                    Space = 0U
                }
            });
        return result;
    }
 
    /// <summary> Оформление ячейки с заливкой</summary>
    private TableCellProperties ShadedCellProperties()
    {
        var result = new TableCellProperties();
        result.Append(
            new TableCellBorders
            {
                TopBorder = new TopBorder
                {
                    Val = BorderValues.Single,
                    Color = "auto",
                    Size = 12U,
                    Space = 0U
                },
                LeftBorder = new LeftBorder
                {
                    Val = BorderValues.Single,
                    Color = "auto",
                    Size = 12U,
                    Space = 0U
                },
                BottomBorder = new BottomBorder
                {
                    Val = BorderValues.Single,
                    Color = "auto",
                    Size = 6U,
                    Space = 0U
                },
                RightBorder = new RightBorder
                {
                    Val = BorderValues.Single,
                    Color = "auto",
                    Size = 12U,
                    Space = 0U
                }
            });
        result.Append(new Shading { Val = ShadingPatternValues.Clear, Color = "auto", Fill = ToHex(ShadeColor) });
        return result;
    }
 
    /// <summary> Оформление пустой ячейки </summary>
    private TableCellProperties EmptyCellProperties()
    {
        var result = new TableCellProperties();
        result.Append(
            new TableCellBorders
            {
                TopBorder = new TopBorder
                {
                    Val = BorderValues.None,
                },
                BottomBorder = new BottomBorder
                {
                    Val = BorderValues.None,
                },
                RightBorder = new RightBorder
                {
                    Val = BorderValues.Single,
                    Color = "auto",
                    Size = 12U,
                    Space = 0U
                }
            });
        return result;
    }
 
    private void CreatePackage(string filePath)
    {
        using (WordprocessingDocument package = WordprocessingDocument.Create(filePath, WordprocessingDocumentType.Document))
        {
            CreateParts(package);
        }
    }
 
    private void CreateParts(WordprocessingDocument document)
    {
        MainDocumentPart documentPart = document.AddMainDocumentPart();
        GenerateMainDocumentPart1Content(documentPart);
    }
}


Использование:
C#
1
2
3
4
5
6
var gen = new DataGridViewExporter
{
    HeaderColor = Color.DarkGray,
    ShadeColor = Color.BurlyWood
};
gen.Export("test.docx", dgv);
1
6 / 6 / 3
Регистрация: 29.08.2016
Сообщений: 107
17.07.2017, 14:15  [ТС]
а можете подсказать как код можно применить для VS 2008
0
 Аватар для ViterAlex
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
17.07.2017, 15:43
AlekseyS_35, а что не получается? Вроде бы всё должно работать
0
6 / 6 / 3
Регистрация: 29.08.2016
Сообщений: 107
17.07.2017, 16:02  [ТС]
при сборке кода студия ругается на dynamic - отсутствует или пропущена ссылка на объект и по чему то подчеркивает ToWordColor

Ниже указанные ссылки в сборке указаны.
C#
1
2
3
4
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
что я делаю не так.
0
 Аватар для ViterAlex
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
17.07.2017, 16:55
Цитата Сообщение от AlekseyS_35 Посмотреть сообщение
по чему то подчеркивает ToWordColor
C#
1
2
3
4
public static int ToWordColor(this Color color)
{
    return (color.B << 8 << 8) + (color.G << 8) + color.R;
}
Это метод расширения. Работает, начиная с С#3.0
Ну если ругается, то можно переписать в обычный:
C#
1
2
3
4
public static int ToWordColor(Color color)
{
    return (color.B << 8 << 8) + (color.G << 8) + color.R;
}
и тогда вместо HeaderColor.ToWordColor() использовать ToWordColor(HeaderColor)
Цитата Сообщение от AlekseyS_35 Посмотреть сообщение
при сборке кода студия ругается на dynamic
Я писал через dynamic, потому что так проще и не зависит (почти) от установленной версии офиса. Но это поддерживается, начиная с C#4.0, т.е. 2010 студии. Используй вместо dynamic соответствующие типы Word, как ты делал до этого.
Но я предлагаю использовать вариант с OpenXML. Тогда установленный офис не нужен вообще.

И рекомендую перейти на более свежую студию, хотя бы на 2013
0
6 / 6 / 3
Регистрация: 29.08.2016
Сообщений: 107
04.05.2018, 12:40  [ТС]
можете подсказать возможно ли при экспорте данных из DGV сделать проверку на наличие шаблона и в случае если шаблон отсутствует то происходит создание файла. а если есть то запись происходит в данный шаблон.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.05.2018, 12:40

Экспорт данных в шаблон Word
Здравствуйте, подскажите как сформировать отчёт из С# в Word. Заранее спасибо =)

Вывод связанных таблиц в два DataGridView
Здравствуйте. Имеется БД Access из двух связанных таблиц (связь один ко многим; одной строке таблицы1 соответствует несколько строк...

Экспорт из DataGridView в шаблон MS Excel
Здравствуйте, подскажите как реализировать задачу: Есть шаблон Excel под таблицу (.xltx) и расположен в папке с проектом. Нужно вывести...

Экспорт из ListBox в готовый шаблон Word
Добрый день, нужна помощь в реализации одной функции, в общем в ListBox у меня хранится подробная информации о недостачах, переизбытках...

Экспорт DataGridView в word
Доброе время! Помогите пожалуйста кто может. Экспортирую данные в Word, все срабатывает до строки экспорта из datagridview. Выдает ошибку:...


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

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
Новые блоги и статьи
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru