1 / 1 / 0
Регистрация: 13.03.2017
Сообщений: 64
1

Экспорт таблицы в Word

10.04.2019, 07:37. Показов 2297. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! Нашёл на форуме код на экспорт таблицы из Datagrid в word. Всё работает, но помимо моей строки, в таблице создаются ещё две пустые строки. В чём может быть проблема?
Вот код:
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
namespace из_datagrid_в_word
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        public void Export_Data_To_Word(DataGridView DGV, string filename)
       {
           
        if (DGV.Rows.Count != 0)
        {
            int RowCount = DGV.Rows.Count;
            int ColumnCount = DGV.Columns.Count;
            Object[,] DataArray = new object[RowCount + 1, ColumnCount + 1];
 
            //Добавление строк и ячеек
            int r = 0;
            for (int c = 0; c <= ColumnCount - 1; c++)
            {
                for (r = 0; r <= RowCount - 1; r++)
                {
                    DataArray[r, c] = DGV.Rows[r].Cells[c].Value;
                }
            } 
 
            Word.Document oDoc = new Word.Document();
            oDoc.Application.Visible = true;
 
            //Ориентация листа
            oDoc.PageSetup.Orientation = Word.WdOrientation.wdOrientLandscape;
 
 
            dynamic oRange = oDoc.Content.Application.Selection.Range;
            string oTemp = "";
            for (r = 0; r <= RowCount - 1; r++)
            {
                for (int c = 0; c <= ColumnCount - 1; c++)
                {
                    oTemp = oTemp + DataArray[r, c] + "\t";
 
                }
            }
 
            //Формат таблицы
            oRange.Text = oTemp;
            object oMissing = Missing.Value;
            object Separator = Word.WdTableFieldSeparator.wdSeparateByTabs;
            object ApplyBorders = true;
            object AutoFit = true;
            object AutoFitBehavior = Word.WdAutoFitBehavior.wdAutoFitContent;
 
            oRange.ConvertToTable(ref Separator, ref RowCount, ref ColumnCount,
                                  Type.Missing, Type.Missing, ref ApplyBorders,
                                  Type.Missing, Type.Missing, Type.Missing,
                                  Type.Missing, Type.Missing, Type.Missing,
                                  Type.Missing, ref AutoFit, ref AutoFitBehavior, Type.Missing);
 
            oRange.Select();
 
            oDoc.Application.Selection.Tables[1].Select();
            oDoc.Application.Selection.Tables[1].Rows.AllowBreakAcrossPages = 0;
            oDoc.Application.Selection.Tables[1].Rows.Alignment = 0;
            oDoc.Application.Selection.Tables[1].Rows[1].Select();
            oDoc.Application.Selection.InsertRowsAbove(1);
            oDoc.Application.Selection.Tables[1].Rows[1].Select();
 
            //Стиль заголовка таблицы
            oDoc.Application.Selection.Tables[1].Rows[1].Range.Bold = 2;
            oDoc.Application.Selection.Tables[1].Rows[1].Range.Font.Name = "Tahoma";
            oDoc.Application.Selection.Tables[1].Rows[1].Range.Font.Size = 14;
 
            //add header row manually
            for (int c = 0; c <= ColumnCount - 1; c++)
            {
                oDoc.Application.Selection.Tables[1].Cell(1, c + 1).Range.Text = DGV.Columns[c].HeaderText;
            }
 
            //Стили таблицы
            oDoc.Application.Selection.Tables[1].Rows[1].Select();
            oDoc.Application.Selection.Cells.VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
            oDoc.Application.Selection.Tables[1].Borders.Enable = 1;
                 
 
 
                //Текст шапки
                foreach (Word.Section section in oDoc.Application.ActiveDocument.Sections)
            {
                Word.Range headerRange = section.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
                headerRange.Fields.Add(headerRange, Word.WdFieldType.wdFieldPage);
                headerRange.Text = "Заявка на закупку картриджа";
                headerRange.Font.Size = 16;
                headerRange.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
            }
 
          //Сохранение файла
          
            oDoc.SaveAs(filename, ref oMissing, ref oMissing, ref oMissing,
            ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
            ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
            ref oMissing, ref oMissing);
            }  
           }
        private void button1_Click(object sender, EventArgs e)
        {
            SaveFileDialog sfd = new SaveFileDialog();
 
            sfd.Filter = "Word Documents (*.docx)|*.docx";
 
            sfd.FileName = "Запрос на покупку.docx";
 
            if (sfd.ShowDialog() == DialogResult.OK)
            {
                Export_Data_To_Word(dataGridView1, sfd.FileName);
            }
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.04.2019, 07:37
Ответы с готовыми решениями:

Экспорт RadioButton в Word
Здравствуйте. Подскажите пожалуйста, как можно отметить галочкой в Word что-нибудь из Forms...

Экспорт в Word из ListView
Подскажите как можно сделать экспорт в Word из ListView?

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

Экспорт в Word и Excel
Как прописать код, чтобы экспортировать из dataGridview в формате doc и xls

4
2806 / 1676 / 884
Регистрация: 14.04.2015
Сообщений: 5,714
10.04.2019, 08:54 2
попробовали бы Сами поковырять те места, где добавляются строки и ячейки, индексы может лишние, или грид имеет пустые строки. чтобы разбираться в таком, помощь других не нужна.
0
1 / 1 / 0
Регистрация: 13.03.2017
Сообщений: 64
10.04.2019, 10:57  [ТС] 3
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
попробовали бы Сами поковырять те места, где добавляются строки и ячейки, индексы может лишние, или грид имеет пустые строки. чтобы разбираться в таком, помощь других не нужна.
Да я пытался уже всё менять в коде, где добавляются строки и ячейки, но всё равно что-то да не так будет работать. Плохо в коде разбираюсь ещё.
0
113 / 89 / 26
Регистрация: 11.12.2018
Сообщений: 331
12.04.2019, 07:54 4
Цитата Сообщение от SynsWor Посмотреть сообщение
C#
1
int RowCount = DGV.Rows.Count; int ColumnCount = DGV.Columns.Count; Object[,] DataArray = new object[RowCount + 1, ColumnCount + 1];
Смотрите тут, new object[RowCount + 1, ColumnCount + 1], допустим в RowCount содержится 1, мы увеличиваем до 2, нумерация идет с нуля вот и получаем 3 строки.
0
1 / 1 / 0
Регистрация: 13.03.2017
Сообщений: 64
12.04.2019, 15:03  [ТС] 5
Цитата Сообщение от OttoFix Посмотреть сообщение
Смотрите тут, new object[RowCount + 1, ColumnCount + 1], допустим в RowCount
По-разному менял эту строку - ничего не получается.
C#
1
2
3
4
5
6
7
8
9
  string oTemp = "";
            for (r = 0; r <= RowCount - 1; r++)
            {
                for (int c = 0; c <= ColumnCount - 1; c++)
                {
                    oTemp = oTemp + DataArray[r, c] + "\t";
 
                }
            }
Мне кажется проблема в этой строке, тут пытался менять, что-то получалось, но всё равно работало не так как надо
0
12.04.2019, 15:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.04.2019, 15:03
Помогаю со студенческими работами здесь

Экспорт значения checkbox в Word
Всем добрый день, не так давно начал погружаться в работу с библиотекой...

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

Экспорт информации из textBox в MS Word 2013
Здравствуйте. Перепробовал много вариантов экспорта информации из textBoxa в MS Word 2013, ничего...

Экспорт datagridview в Word по нажатию Button
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data;...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru