Para imprimir uma datagridview:
O Codigo cria um objecto datagridview e depois imprime-o.
Código:
private DataGridViewPrint PrintGrid;
private void btnPrint_Click(object sender, System.EventArgs e)
{
frmPrint fpr = new frmPrint();
fpr.Title = DataGridView1.CaptionText;
fpr.ShowDialog();
if (fpr.Result > 0)
{
PrintGrid = new DataGridViewPrint(printDocument1, DataGridView1, fpr.bBlackWhite);
PrintGrid.PrintTitle = fpr.bTitle;
PrintGrid.Title = fpr.Title;
if (fpr.Result == 1) // Print
{
if (printDialog1.ShowDialog() == DialogResult.OK)
{
printDocument1.Print();
}
}
else if (fpr.Result == 2) // Page setup
{
pageSetupDialog1.ShowDialog();
}
else if (fpr.Result == 3) // Preview
{
printPreviewDialog1.Icon = fpr.Icon;
printPreviewDialog1.ShowDialog();
}
}
}
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
e.HasMorePages = PrintGrid.Print(e.Graphics);
}
Ao imprimir, pode mandar imprimir para PDF, logo Imprimir e exportar para PDF está resolvido.
Agora para exportares para Excel é simples.
Primeiro nos componentes tens de adicionar o Microsoft Excel 10.0 Object Library.
Depois usas este codigo:
Código:
Excel.ApplicationClass excel = new Excel.ApplicationClass();
excel.Application.Workbooks.Add(true);
DataTable table = ticketsList.Tables[0];
int cIndex = 0;
foreach(DataColumn col in table.Columns)
{
cIndex++;
excel.Cells[1,cIndex]=col.ColumnName;
}
int rIndex=0;
foreach(DataRow row in table.Rows)
{
rIndex++;
cIndex=0;
foreach(DataColumn col in table.Columns)
{
cIndex++;
excel.Cells[rIndex+1,cIndex] = row[col.ColumnName].ToString();
}
}
excel.Save("New.xls");