由于做的项目用到打印和导出功能,我根据在图书馆里看到的,结合实践,自己编写代码实现了这方面的功能,其中有不足之处,不吝赐教.
class PrintEx
{
//打印DataGridView中数据
public void PrintDataGridView(DataTable dt,object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
int r = 0;
int c = 20;
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
e.Graphics.DrawString(dt.Rows[i][j].ToString(), new Font("宋体", 10, FontStyle.Regular), Brushes.Black, r, c);
r = r + 65;
}
r = 0;
c += 20;
}
}
}
//自定义方法ExportDataGridView()实现导出到Excel
public bool ExportDataGridView(DataGridView dgv, bool isShowExcle)
{
if (dgv.Rows.Count == 0)
return false;
//建立Excel对象
Excel.Application excel = new Excel.Application();
excel.Application.Workbooks.Add(true);
excel.Visible = isShowExcle;
//生成字段名称
for (int i = 0; i < dgv.ColumnCount; i++)
{
excel.Cells[1, i + 1] = dgv.Columns[i].HeaderText;
}
//填充数据
for (int i = 0; i < dgv.RowCount-1; i++)
{
for (int j = 0; j < dgv.ColumnCount; j++)
{
if (dgv[j, i].ValueType == typeof(string))
{
excel.Cells[i + 2, j + 1] = "" + dgv[j,i].Value.ToString();
}
else
{
excel.Cells[i + 2, j + 1] = dgv[j,i].Value.ToString();
}
}
}
return true;
}
//打印Label中数据
public void PrintLabel(Label lb, object sender, System.Drawing.Printing.PrintPageEventArgs e,int r,int c)
{
e.Graphics.DrawString(lb.Text, new Font("宋体", 10, FontStyle.Regular), Brushes.Black, r, c);
}
//打印TextBox中数据
public void PrintTextBox(TextBox tb, object sender, System.Drawing.Printing.PrintPageEventArgs e,int r,int c)
{
e.Graphics.DrawString(tb.Text, new Font("宋体", 10, FontStyle.Regular), Brushes.Black, r, c);
}
//打印ComboBox中数据
public void PrintComboBox( ComboBox cb, object sender, System.Drawing.Printing.PrintPageEventArgs e, int r, int c)
{
e.Graphics.DrawString(cb.Text, new Font("宋体", 10, FontStyle.Regular), Brushes.Black, r, c);
}
//打印DateTimePicker中数据
public void PrintDateTimePc(DateTimePicker dtp, object sender, System.Drawing.Printing.PrintPageEventArgs e, int r, int c)
{
e.Graphics.DrawString(dtp.Value.ToString(), new Font("宋体", 10, FontStyle.Regular), Brushes.Black, r, c);
}
//执行打印窗体中的数据操作
public void PrintDGView(DataTable dt,int r,int c,int rstep,int cstep, object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
int row = r;
int column = c;
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
e.Graphics.DrawString(dt.Rows[i][j].ToString(), new Font("宋体", 10, FontStyle.Regular), Brushes.Black,row,column);
row = row+rstep;
}
row = r;
column += cstep;
}
}
}
//打印DataGridView中数据
public void PrintDatas(DataTable dt, object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
//打印字段名称
e.Graphics.DrawString(dt.Columns[j].ToString(), new Font("宋体", 10, FontStyle.Regular), Brushes.Black, 20, 20);
......
if (dt.Rows.Count > 0)
{
int r = 50;
int c = 30;
for (int i = 0; i < dt.Rows.Count; i++)
{
e.Graphics.DrawString(dt.Rows[i][j].ToString(), new Font("宋体", 10, FontStyle.Regular), Brushes.Black, c, r);
......
c = 30;
r += 20;
}
}
}
}