我有一个datagridview来显示我的条目,我想打印出来就像一个Excel表。如何在C#中打印DataGridView?
有没有什么办法可以完全打印datagridview,或者你建议用什么样的控件来存储和打印数据?
或者如何在C#中使用HTML表格来帮助我创建和打印它们?
我有一个datagridview来显示我的条目,我想打印出来就像一个Excel表。如何在C#中打印DataGridView?
有没有什么办法可以完全打印datagridview,或者你建议用什么样的控件来存储和打印数据?
或者如何在C#中使用HTML表格来帮助我创建和打印它们?
Here的解决方案。
首先,你要知道在.net库中的类的PrintDocument,这个类可以帮助您打印任何矩形 ,你的任务是到表中转换成的datagridview矩形(或绘制匹配了新的矩形datagridview中的表格大小包括绘图字符串(这些字符串是单元格的内容)?)。之后,您可以使用类PrintDocument中的方法和更多来开始打印。
http://www.codeproject.com/KB/printing/printingdatagridview.aspx
你必须先加入CodeProject上的网络能够下载的示例代码。
你能显示一些代码吗? – hitautodestruct 2012-11-26 19:09:34
// make a function named zpt
int rw=dataGridView1.Rows.Count; //define rw as globly variable in form
public void zpt()
{
PrintDialog pd = new PrintDialog();
PrintDocument pdoc = new PrintDocument();
PrinterSettings ps = new PrinterSettings();
Font font = new Font("Arial", 10);
PaperSize psz = new PaperSize("Custom", 100, 200);
pd.Document = pdoc;
pd.Document.DefaultPageSettings.PaperSize = psz;
pdoc.DefaultPageSettings.PaperSize.Height = 820;
pdoc.DefaultPageSettings.PaperSize.Width = 700;
pdoc.PrintPage += new PrintPageEventHandler(pdoc_PrintPage);
DialogResult res = pd.ShowDialog();
if (res == DialogResult.OK)
{
PrintPreviewDialog prv = new PrintPreviewDialog();
prv.Document = pdoc;
res = prv.ShowDialog();
if (res == DialogResult.OK)
{
pdoc.Print();
}
}
}
void pdoc_PrintPage(object sender, PrintPageEventArgs e)
{
Graphics graphics = e.Graphics;
Font font = new Font("Courier New", 10);
float fontHeight = font.GetHeight();
int startX = 50;
int startY = 65;
int Offset = 40;
graphics.DrawString("Welcome to Bakery Shop", new Font("Courier New", 10), new SolidBrush(Color.Black), startX, startY + Offset);
Offset = Offset + 20;
string underLine = "------------------------------------------";
graphics.DrawString(underLine, new Font("Courier New", 10), new SolidBrush(Color.Black), startX, startY + Offset);
Offset = Offset + 20;
int a = dataGridView1.Rows.Count;
for (int i = 0; i < a; i++)
{
graphics.DrawString(Convert.ToString(dataGridView1.Rows[i].Cells[0].Value), new Font("Courier New", 10), new SolidBrush(Color.Black), startX, startY + Offset);
graphics.DrawString("\t"+Convert.ToString(dataGridView1.Rows[i].Cells[1].Value), new Font("Courier New", 10), new SolidBrush(Color.Black), startX, startY + Offset);
Offset = Offset + 20;
}
}
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.Rows.Add();
dataGridView1.Rows[rw].Cells[0].Value = textBox1.Text;
dataGridView1.Rows[rw].Cells[1].Value = textBox2.Text;
rw++;
}
private void button2_Click(object sender, EventArgs e)
{
// on print Button which is in your window for code this...
zpt();
}
Theres很多解决方案在线。你可以谷歌它 here
我知道你指出一篇文章说明问题的确切解决方案。但是,是否有可能进一步阐述并给出正确答案? – hitautodestruct 2012-11-26 19:05:53