Страница: 1 |
|
Вопрос: Экспорт данных из DataGridView в Word
|
Добавлено: 10.04.09 20:17
|
|
Автор вопроса: Лёня
|
Подскажите пожалуйста!!!или укажите путь где уже рассматривался этот вопрос!!Очень нужно!!
на форме есть датагрид, необходимо всё его содержимое вывести в ворд со всеми записями.
Заранее благодарен Вам!!
Ответить
|
Номер ответа: 1 Автор ответа: Fatty
Вопросов: 0 Ответов: 55
|
Профиль | | #1
|
Добавлено: 29.04.09 00:01
|
Как раз вчера парился с тем же самым вопросом
Посмотри может пригодится
У меня работает VS2005, MS Office 2003
- /// <summary>
- ///
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void btnExportWord_Click(object sender, EventArgs e)
- {
- try
- {
- DataTable dt = table;// <==extrafluous, just for imaging
- wdApp = new Microsoft.Office.Interop.Word.Application();
- wdApp.Visible = true;
-
- wdDoc = (Microsoft.Office.Interop.Word.Document)wdApp.Documents.Add(ref deflt, ref deflt, ref deflt, ref deflt);
- //wdDoc.Open();
- wdDoc.Activate();
- wdDoc = wdApp.ActiveDocument;
- object start = 0;
- Microsoft.Office.Interop.Word.Range rng = wdDoc.Range(ref start, ref start);
-
-
- rng.InsertBefore("Some Text Line Goes Here");
-
- rng.Font.Name = "Arial";
- rng.Font.Size = 12;
- Microsoft.Office.Interop.Word.WdParagraphAlignment alg = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;
- wdDoc.Paragraphs[1].Alignment = alg;
- rng.InsertParagraphAfter();
- rng.InsertParagraphAfter();
- rng.SetRange(rng.End, rng.End);
- Word.Table tbl = wdDoc.Tables.Add(wdDoc.Paragraphs[2].Range, dt.Rows.Count + 1, dt.Columns.Count, ref deflt, ref deflt);
- ExpGridToWord(dt, tbl, "Table Title Goes Here");
- object filename = "C:\\MyTableDoc.doc";
- wdDoc.SaveAs(
- ref filename, ref deflt, ref deflt, ref deflt, ref deflt,
- ref deflt, ref deflt, ref deflt, ref deflt, ref deflt,
- ref deflt, ref deflt, ref deflt, ref deflt, ref deflt, ref deflt);
- wdApp.Quit(ref deflt, ref deflt, ref deflt);
- wdDoc = null;
- wdApp = null;
- GC.Collect();
- GC.WaitForPendingFinalizers();
- GC.Collect();
- GC.WaitForPendingFinalizers();
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message +
- "\n_____________________________\n" +
- ex.StackTrace);
- }
- }
- /// <summary>
- ///
- /// </summary>
- /// <param name="dt"></param>
- /// <param name="tbl"></param>
- /// <param name="title"></param>
- private void ExpGridToWord(DataTable dt, Word.Table tbl,string title)
- {
- int row = 1;
- Microsoft.Office.Interop.Word.WdParagraphAlignment alg = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;
- tbl.Cell(row, 1).Range.Text = title;
- tbl.Rows[1].Cells.Merge();
- tbl.Rows[1].Range.Paragraphs[1].Alignment = alg;
- row = 2;
- for (int i = 0; i < dt.Columns.Count; i++)
- {
- tbl.Cell(row, i+1).Range.Text = dt.Columns.ColumnName;
- }
-
- row = 2;
- int col = 0;
-
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- col = 1;
- for (int j = 0; j < dt.Columns.Count; j++)
- {
- tbl.Cell(row,col).Range.Text = dt.Rows[j].ToString();//<=======
- col++;
- }
-
- row++;
- }
- }
~'J'~
Ответить
|
Номер ответа: 2 Автор ответа: Fatty
Вопросов: 0 Ответов: 55
|
Профиль | | #2
|
Добавлено: 29.04.09 01:40
|
Нашел ошибку используй этот вариант
- /// <summary>
- ///
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void btnExportWord_Click(object sender, EventArgs e)
- {
- try
- {
- DataTable dt = table;
- wdApp = new Microsoft.Office.Interop.Word.Application();
- wdApp.Visible = true;
-
- wdDoc = (Microsoft.Office.Interop.Word.Document)wdApp.Documents.Add(ref deflt, ref deflt, ref deflt, ref deflt);
- wdDoc.Activate();
- wdDoc = wdApp.ActiveDocument;
- object start = 0;
- Microsoft.Office.Interop.Word.Range rng = wdDoc.Range(ref start, ref start);
-
-
- rng.InsertBefore("Some Text Line Goes Here");
-
- rng.Font.Name = "Calibri";
- rng.Font.Size = 14;
- rng.Font.Bold = 1;
- rng.Font.ColorIndex = Microsoft.Office.Interop.Word.WdColorIndex.wdBlue;
- Microsoft.Office.Interop.Word.WdParagraphAlignment alg = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;
- wdDoc.Paragraphs[1].Alignment = alg;
- rng.InsertParagraphAfter();
- rng.InsertParagraphAfter();
- rng.SetRange(rng.End, rng.End);
- //
- Word.Table tbl = wdDoc.Tables.Add(wdDoc.Paragraphs[2].Range, dt.Rows.Count + 2, dt.Columns.Count, ref deflt, ref deflt);
- for (int n = 2; n <= tbl.Rows.Count; n++)
- {
- if (n % 2 == 0)
- {
- tbl.Rows[n].Range.Shading.BackgroundPatternColor = Microsoft.Office.Interop.Word.WdColor.wdColorGray10;
- }
- else
- {
- tbl.Rows[n].Range.Shading.BackgroundPatternColor = Microsoft.Office.Interop.Word.WdColor.wdColorGray20;
- }
- }
- tbl.Range.Font.Name = "Tahoma";
- tbl.Range.Font.ColorIndex = Microsoft.Office.Interop.Word.WdColorIndex.wdDarkRed;
- tbl.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleDouble;
- tbl.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleDouble;
- tbl.Borders.InsideColor = Microsoft.Office.Interop.Word.WdColor.wdColorDarkBlue;
- tbl.Borders.OutsideColor = Microsoft.Office.Interop.Word.WdColor.wdColorDarkBlue;
- tbl.Rows[1].Range.Cells[1].Range.Font.Color = Microsoft.Office.Interop.Word.WdColor.wdColorBrown;
- tbl.Rows[1].Range.Cells[1].Range.Bold = 1;
- tbl.Rows[1].Range.Cells[1].Range.Borders.Shadow = false;
- //
- ExpGridToWord(dt, tbl, "Table Title Goes Here");
- object filename = "C:\\MyTableDoc.doc";
- wdDoc.SaveAs(
- ref filename, ref deflt, ref deflt, ref deflt, ref deflt,
- ref deflt, ref deflt, ref deflt, ref deflt, ref deflt,
- ref deflt, ref deflt, ref deflt, ref deflt, ref deflt, ref deflt);
- wdApp.Quit(ref deflt, ref deflt, ref deflt);
- wdDoc = null;
- wdApp = null;
- GC.Collect();
- GC.WaitForPendingFinalizers();
- GC.Collect();
- GC.WaitForPendingFinalizers();
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message +
- "\n_____________________________\n" +
- ex.StackTrace);
- }
- }
- /// <summary>
- ///
- /// </summary>
- /// <param name="dt"></param>
- /// <param name="tbl"></param>
- /// <param name="title"></param>
- private void ExpGridToWord(DataTable dt, Word.Table tbl,string title)
- {
- int row = 1;
- Microsoft.Office.Interop.Word.WdParagraphAlignment alg = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;
- tbl.Cell(row, 1).Range.Text = title;
- tbl.Rows[1].Cells.Merge();
- tbl.Rows[1].Range.Paragraphs[1].Alignment = alg;
- row = 2;
- for (int i = 0; i < dt.Columns.Count; i++)
- {
- tbl.Cell(row, i+1).Range.Text = dt.Columns.ColumnName;
- }
-
- row = 3;
- int col = 0;
-
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- col = 1;
- for (int j = 0; j < dt.Columns.Count; j++)
- {
- tbl.Cell(row,col).Range.Text = dt.Rows[j].ToString();
- col++;
- }
-
- row++;
- }
- }
~'J'~
Ответить
|
Страница: 1 |
Поиск по форуму