2009-02-18 2 views
14

Я довольно новичок в .NET и C#, но у меня есть DataGridView, который я бы хотел распечатать. Какой был бы лучший способ сделать это?Печать .NET DataGridView

+0

@Simon Благодарим вас за добавление тегов! : o) –

ответ

3

Вы можете экспортировать DataGridView в Excel и затем распечатать его из Excel.

Вы также можете рассмотреть возможность не показывать свои данные в DataGridView, но показывать его в элементе управления ReportViewer, который имеет возможность экспорта в PDF или Excel. Оттуда можно распечатать свои данные.

+0

@Bliek Спасибо за предложение! Как я уже упоминал в другом комментарии, я бы хотел попытаться придерживаться этого элемента управления на данный момент ... но я буду помнить об этом! –

+0

В конце концов я закончил это. Я все еще показываю свои данные в DataGridView, но если пользователь решает распечатать его, я использую средство просмотра отчетов. Еще раз спасибо! –

3

Нет поддержки встроенной печати. ​​Боюсь.

Вы можете воспользоваться сторонним элементом управления, таким как Infragistics WinGrid, который имеет встроенную поддержку печати.

+0

@Gerrie Schenck Спасибо за ссылку! Я думаю, что пока я продолжу настаивать, чтобы попытаться использовать текущий элемент управления, но я буду помнить об этом, потому что мне это нужно! –

2

Элементы управления .NET WinForm (например, datagridview) не поддерживают печать.

В случае с datagridview вы можете вызвать 'DrawToBitmap', а затем взять это растровое изображение и передать его на функции печати, чтобы создать его на бумаге.

+0

@GWLlosa Спасибо! Это работает, и я могу распечатать свою сетку, но она выглядит как скриншот. Я надеялся, что смогу отформатировать его в чем-то более дружелюбном. Мысли? –

+0

Если вы хотите переформатировать то, как оно выглядит, вам нужно либо переформатировать сам элемент управления перед вызовом, либо фактически создать собственный datagridview в коде рисования, используя данные в строках и ячейках для его заполнения. Получается беспорядочно быстро. – GWLlosa

8

Есть проекты на CodeProject, которые сделали некоторые работы, печати DataGridViews.

+0

@Bob Спасибо! Я попытаюсь реализовать это сейчас ... –

+1

+1 для отличного ресурса. – SoftwareGeek

1

Если вы собираетесь печатать больше, чем просто DataGridViews, то может потребоваться более общий подход. Мы используем MigraDoc, а затем создали собственный класс для чтения DataGridViews и вывода классов MigraDoc, представляющих таблицу.

Есть много отличных пакетов для печати, но у меня есть опыт работы с MigraDoc.

Edit:

В ответ на замечания, вот ссылка на мой сайт, отображая код, который я создал для создания таблиц MigraDoc и пример его использования для отображения DataGridView (DataGridView to MigraDoc tables).

+0

Привет. Можете ли вы поделиться некоторыми образцами кода, которые используют Migradoc с DataGridViews? – edosoft

+0

Обновлен мой ответ ссылкой. Надеюсь это поможет! –

10

Добавить DataGridView, а PrintDocuemnt, и затем с помощью кнопки:

button click events { 
    printDocument1.Print(); 
} 

printDocument1_PrintPage events { 
    Bitmap bm = new Bitmap(this.dataGridView1.Width, this.dataGridView1.Height); 
    this.dataGridView1.DrawToBitmap(bm, new Rectangle(0, 0, this.dataGridView1.Width, this.dataGridView1.Height)); 
    e.Graphics.DrawImage(bm, 0, 0); 
} 

Это все ваши печать данных.

+1

Его очень легко и удивительно. Очень спасибо. – Sagotharan

+0

+1 для приличного и элегантного способа ... Мне это нравится :) – coder

+1

Не уверен, что мне не хватает, но это порождает немало ошибок. Я использую visual studio 13 и C#. –

5

Я знаю, что вы уже приняли ответ, но следующий человек, чтобы найти этот вопрос ...

Я также нашел этот замечательный проект по проекту кодекса, а просто реализовали его. Это было ЛЕГКО и приятно. http://www.codeproject.com/KB/grid/GridDrawer.Net.aspx

+1

Благодарим за добавление! : О) –

1

Мне нравится этот метод http://www.codeproject.com/KB/grid/GridDrawer.Net.aspx Но есть ли способ выбрать принтер.

Я хочу автоматическую печать в конце процесса. Поэтому планируем выбрать это как опции 1, поэтому я всегда могу распечатать принтер по умолчанию. И еще один вариант - выбрать принтер, а затем распечатать. Таким образом, всего 2 функции ptint. Пожалуйста, ответьте. Приветствия

4

CodeProject На:

Another DataGridView Printer by aureolin

Выше еще один отличный DataGridView принтер, который чрезвычайно прост в реализации.

Я понимаю, что я Johnny Come Lately в этой теме. Я наткнулся на него, ища что-то еще, но хотел обратиться к этому превосходному печатающему решению для других, которые происходят таким образом (как и я).

Я надеюсь, что кто-то здесь будет полезен.