Я довольно новичок в .NET и C#, но у меня есть DataGridView, который я бы хотел распечатать. Какой был бы лучший способ сделать это?Печать .NET DataGridView
ответ
Вы можете экспортировать DataGridView в Excel и затем распечатать его из Excel.
Вы также можете рассмотреть возможность не показывать свои данные в DataGridView, но показывать его в элементе управления ReportViewer, который имеет возможность экспорта в PDF или Excel. Оттуда можно распечатать свои данные.
@Bliek Спасибо за предложение! Как я уже упоминал в другом комментарии, я бы хотел попытаться придерживаться этого элемента управления на данный момент ... но я буду помнить об этом! –
В конце концов я закончил это. Я все еще показываю свои данные в DataGridView, но если пользователь решает распечатать его, я использую средство просмотра отчетов. Еще раз спасибо! –
Нет поддержки встроенной печати. Боюсь.
Вы можете воспользоваться сторонним элементом управления, таким как Infragistics WinGrid, который имеет встроенную поддержку печати.
@Gerrie Schenck Спасибо за ссылку! Я думаю, что пока я продолжу настаивать, чтобы попытаться использовать текущий элемент управления, но я буду помнить об этом, потому что мне это нужно! –
Элементы управления .NET WinForm (например, datagridview) не поддерживают печать.
В случае с datagridview вы можете вызвать 'DrawToBitmap', а затем взять это растровое изображение и передать его на функции печати, чтобы создать его на бумаге.
@GWLlosa Спасибо! Это работает, и я могу распечатать свою сетку, но она выглядит как скриншот. Я надеялся, что смогу отформатировать его в чем-то более дружелюбном. Мысли? –
Если вы хотите переформатировать то, как оно выглядит, вам нужно либо переформатировать сам элемент управления перед вызовом, либо фактически создать собственный datagridview в коде рисования, используя данные в строках и ячейках для его заполнения. Получается беспорядочно быстро. – GWLlosa
Есть проекты на CodeProject, которые сделали некоторые работы, печати DataGridViews.
@Bob Спасибо! Я попытаюсь реализовать это сейчас ... –
+1 для отличного ресурса. – SoftwareGeek
Если вы собираетесь печатать больше, чем просто DataGridViews, то может потребоваться более общий подход. Мы используем MigraDoc, а затем создали собственный класс для чтения DataGridViews и вывода классов MigraDoc, представляющих таблицу.
Есть много отличных пакетов для печати, но у меня есть опыт работы с MigraDoc.
Edit:
В ответ на замечания, вот ссылка на мой сайт, отображая код, который я создал для создания таблиц MigraDoc и пример его использования для отображения DataGridView (DataGridView to MigraDoc tables).
Привет. Можете ли вы поделиться некоторыми образцами кода, которые используют Migradoc с DataGridViews? – edosoft
Обновлен мой ответ ссылкой. Надеюсь это поможет! –
Добавить 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);
}
Это все ваши печать данных.
Его очень легко и удивительно. Очень спасибо. – Sagotharan
+1 для приличного и элегантного способа ... Мне это нравится :) – coder
Не уверен, что мне не хватает, но это порождает немало ошибок. Я использую visual studio 13 и C#. –
Я знаю, что вы уже приняли ответ, но следующий человек, чтобы найти этот вопрос ...
Я также нашел этот замечательный проект по проекту кодекса, а просто реализовали его. Это было ЛЕГКО и приятно. http://www.codeproject.com/KB/grid/GridDrawer.Net.aspx
Благодарим за добавление! : О) –
Мне нравится этот метод http://www.codeproject.com/KB/grid/GridDrawer.Net.aspx Но есть ли способ выбрать принтер.
Я хочу автоматическую печать в конце процесса. Поэтому планируем выбрать это как опции 1, поэтому я всегда могу распечатать принтер по умолчанию. И еще один вариант - выбрать принтер, а затем распечатать. Таким образом, всего 2 функции ptint. Пожалуйста, ответьте. Приветствия
CodeProject На:
Выше еще один отличный DataGridView
принтер, который чрезвычайно прост в реализации.
Я понимаю, что я Johnny Come Lately в этой теме. Я наткнулся на него, ища что-то еще, но хотел обратиться к этому превосходному печатающему решению для других, которые происходят таким образом (как и я).
Я надеюсь, что кто-то здесь будет полезен.
@Simon Благодарим вас за добавление тегов! : o) –