try { //打印设置 PrinterSettings set = new PrinterSettings(); set.Collate = true; set.Duplex = Duplex.Simplex; PrintDocument pd = new PrintDocument(); pd.PrinterSettings = set; pd.PrintPage += new PrintPageEventHandler(this.pd_printTable); //打印预览 PrintPreviewDialog view = new PrintPreviewDialog(); view.Name = "view"; view.UseAntiAlias = true; view.Document = pd; view.AutoScaleDimensions = new SizeF(290, 210); view.ShowDialog(); _TableIndex = 0; } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void pd_printTable(object sender, PrintPageEventArgs pea) { int y = 65; int x = 20; Font font = new Font("Arial", 9);
if (_TableIndex <= dt.Rows.Count - 1) { pea.Graphics.DrawString("客户编号:", font, Brushes.Black, x, y, new StringFormat()); pea.Graphics.DrawString("机种品号:", font, Brushes.Black, x, y + 15, new StringFormat()); pea.Graphics.DrawString("机种品番:", font, Brushes.Black, x, y + 30, new StringFormat()); pea.Graphics.DrawString("生产数量:", font, Brushes.Black, x + 120, y, new StringFormat()); pea.Graphics.DrawString("工序名称:", font, Brushes.Black, x + 180, y + 15, new StringFormat()); pea.Graphics.DrawString(dt.Rows[_TableIndex]["TAT002"].ToString(), font, Brushes.Black, x + 62, y, new StringFormat()); pea.Graphics.DrawString(dt.Rows[_TableIndex]["TAT006"].ToString(), font, Brushes.Black, x + 62, y + 15, new StringFormat()); pea.Graphics.DrawString(dt.Rows[_TableIndex]["TAT008"].ToString(), font, Brushes.Black, x + 62, y + 30, new StringFormat()); pea.Graphics.DrawString(dt.Rows[_TableIndex]["TAT009"].ToString(), font, Brushes.Black, x + 182, y, new StringFormat()); pea.Graphics.DrawString(dt.Rows[_TableIndex]["TAT011"].ToString(), font, Brushes.Black, x + 240, y + 15, new StringFormat()); pea.Graphics.DrawString(GetConvertString(dt.Rows[_TableIndex]["TAT003"].ToString(), "CODE128"), new Font("Code 128", 26), Brushes.Black, 20, 15, new StringFormat()); pea.Graphics.DrawString(dt.Rows[_TableIndex]["TAT003"].ToString(), font, Brushes.Black, 70, 50, new StringFormat()); _TableIndex++; if (_TableIndex == dt.Rows.Count) { _TableIndex = 0; pea.HasMorePages = false; } else { pea.HasMorePages = true; } } }这是我前段时间写的一个打印条码的代码! 请参与,相信对你是有用的!
“DataGridView打印精灵”,提供您简捷丰富的DataGridView报表打印功能! 2009-08-01 21:00“DataGridView打印精灵”,提供您简捷丰富的DataGridView报表打印功能! 集英软件工作室是一家主攻.NET开发的软件工作室,提供各种组件与控件开发。 这个打印组件的高级版只需要70块,您就可以享受到便利的DataGridView打印服务。 “DataGridView打印精灵”可根据各种不同设置方案,进行DataGridView的快速打印。 使用这个DLL方法很简单,先需要添加对DLL的引用。再进行以下代码之添加:VB代码: dim p as new JYWorks.打印精灵(DGV) 'DGV是一个要传入的Datagridview对象. p.showdialog() '''或 p.show()C#代码:
从网上下个ActiveReport控件。
或者你用Excel导出再打印。。
我做过不少这样的很简单的,两天足够,不过我不打清楚你具体的需求
functoin GoPrint()
{
var newWin = window.open("about:blank","Print");
newWin.document.write(document.getElementById("GridView1").outerHTML;
//然后使用ie 打印功能就可
}
http://hi.baidu.com/luhongjing/blog/item/d1413f345286604d251f148a.html
http://unimapmajj.bokee.com/viewdiary.11395707.html
http://blog.sina.com.cn/s/blog_4988e1150100b1s9.html
http://www.cnblogs.com/heekui/archive/2007/05/29/764531.html
{
Font font = new Font("Tahoma", 12, FontStyle.Underline);//设置画笔
Brush bru = Brushes.Blue;
Pen pen = new Pen(bru);
pen.Width = 5;
//设置各边距
int nLeft = this.pageSetupDialog1.PageSettings.Margins.Left;
int nTop = this.pageSetupDialog1.PageSettings.Margins.Top;
int nRight = this.pageSetupDialog1.PageSettings.Margins.Right;
int nBottom = this.pageSetupDialog1.PageSettings.Margins.Bottom;
int nWidth = this.pageSetupDialog1.PageSettings.PaperSize.Width - nRight - nLeft;
int nHeight = this.pageSetupDialog1.PageSettings.PaperSize.Height - nTop - nBottom;
//打印各边距
e.Graphics.DrawLine(pen, nLeft, nTop, nLeft, nTop + nHeight);
e.Graphics.DrawLine(pen, nLeft + nWidth, nTop, nLeft + nWidth, nTop + nHeight);
e.Graphics.DrawLine(pen, nLeft, nTop, nLeft + nWidth, nTop);
e.Graphics.DrawLine(pen, nLeft, nTop + nHeight, nLeft + nWidth, nTop + nHeight);
//在离左边距20,右边距20的位置打印haha xixi
e.Graphics.DrawString("haha xixi", font, bru, nLeft + 100, nTop + 100);//如果要打印datagridView在这里遍历便可
}
private void button4_Click(object sender, EventArgs e)
{
this.printPreviewDialog1.ShowDialog();
if (this.printDialog1.ShowDialog() == DialogResult.OK)
this.printDocument1.Print();
}这也是我在网上搜到的代码,
/* public static string[,] ToStringArrary(DataGridView dataGridView, bool includeColumnText)
{
string[,] arrReturn = null;
int rowsCount = dataGridView.Rows.Count;
int colsCount = dataGridView.Columns.Count ;
//最后一行是供输入的不用读取数据。
if (rowsCount > 0)
{
if (dataGridView.Rows[rowsCount - 1].IsNewRow)
rowsCount--;
}
//包含列的标题
int k = 0;
if (includeColumnText)
{
rowsCount++;
arrReturn = new string[rowsCount, colsCount];
for (k = 0; k < colsCount; k++)
{
arrReturn[0, k] = dataGridView.Columns[k].HeaderText;
}
k = 1;
}
else
arrReturn =new string [rowsCount ,colsCount ];
//读取单元格数据
for (int i=1;k<rowsCount ;i++)
{
for (int j=0;j<colsCount ;j++)
{
arrReturn [i,j]=dataGridView .Rows [i].Cells [j].Value .ToString() ;
}
}
return arrReturn ;
}
打印dataset的數據
private void two(PrintPageEventArgs e, DataSet aa)
{
Font HeadFont = new Font("宋体", 18);
Font BodyFont = new Font("宋体", 12);
Graphics g = e.Graphics;
Pen pen = new Pen(Color.Black, 1);
Rectangle rect = new Rectangle(40, 30, 740, aa.Tables[0].Rows.Count * 30 + 130);
g.DrawRectangle(pen, rect);
g.DrawString(aa.DataSetName, HeadFont, new SolidBrush(Color.Black), 200, 50);
g.DrawString("发往厂家:" + aa.Tables[0].TableName, BodyFont, new SolidBrush(Color.Black), 70, 90);
g.DrawString("出厂日期:" + DateTime.Now.ToLongDateString(), BodyFont, new SolidBrush(Color.Black), 500, 90);
rect = new Rectangle(60, 110, 700, 30);
g.DrawRectangle(pen, rect);
g.DrawString(aa.Tables[0].Columns[0].ColumnName, BodyFont, new SolidBrush(Color.Black), 70, 120);
g.DrawLine(pen, 150, 110, 150, 140);
g.DrawString(aa.Tables[0].Columns[1].ColumnName, BodyFont, new SolidBrush(Color.Black), 160, 120);
g.DrawLine(pen, 300, 110, 300, 140);
g.DrawString(aa.Tables[0].Columns[2].ColumnName, BodyFont, new SolidBrush(Color.Black), 310, 120);
g.DrawLine(pen, 500, 110, 500, 140);
g.DrawString(aa.Tables[0].Columns[3].ColumnName, BodyFont, new SolidBrush(Color.Black), 510, 120);
for (int i = 0; i < aa.Tables[0].Rows.Count; i++)
{
g.DrawLine(pen, 60, 110 + 30 * (i + 1), 60, 140 + 30 * (i + 1));
g.DrawString(aa.Tables[0].Rows[i][0].ToString(), BodyFont, new SolidBrush(Color.Black), 70, 120 + 30 * (i + 1));
g.DrawLine(pen, 150, 110 + 30 * (i + 1), 150, 140 + 30 * (i + 1));
g.DrawString(aa.Tables[0].Rows[i][1].ToString(), BodyFont, new SolidBrush(Color.Black), 160, 120 + 30 * (i + 1));
g.DrawLine(pen, 300, 110 + 30 * (i + 1), 300, 140 + 30 * (i + 1));
g.DrawString(aa.Tables[0].Rows[i][2].ToString(), BodyFont, new SolidBrush(Color.Black), 310, 120 + 30 * (i + 1));
g.DrawLine(pen, 500, 110 + 30 * (i + 1), 500, 140 + 30 * (i + 1));
g.DrawString(aa.Tables[0].Rows[i][3].ToString(), BodyFont, new SolidBrush(Color.Black), 510, 120 + 30 * (i + 1));
g.DrawLine(pen, 760, 110 + 30 * (i + 1), 760, 140 + 30 * (i + 1));
g.DrawLine(pen, 60, 140 + 30 * (i + 1), 760, 140 + 30 * (i + 1));
} }
private DataSet CreateDate()
{
System.Data.DataTable dt = new System.Data.DataTable();
dt.TableName = "XXXXXXXXXX有限公司";
System.Data.DataRow dr;
dt.Columns.Add(new System.Data.DataColumn("序号", typeof(System.String)));
dt.Columns.Add(new System.Data.DataColumn("人渣编号", typeof(System.String)));
dt.Columns.Add(new System.Data.DataColumn("人渣名称", typeof(System.String)));
dt.Columns.Add(new System.Data.DataColumn("永久性标识", typeof(System.String))); for (int i = 0; i < 30; i++)
{
System.Random rd = new System.Random(Environment.TickCount * i); ;
dr = dt.NewRow();
dr[0] = i.ToString().PadLeft(2, '0').ToString(); ;
dr[1] = "3401S-010-A-" + i.ToString().PadLeft(2, '0').ToString();
dr[2] = "XXXXXXX人渣" + i.ToString().PadLeft(2, '0').ToString();
dr[3] = "0704030336022" + i.ToString().PadLeft(2,'0').ToString(); ;
dt.Rows.Add(dr);
}
DataSet ds = new DataSet();
ds.DataSetName = "XXXXXXXXXXXXXXXXXXX人渣永久性标识附表";
ds.Tables.Add(dt);
return ds;
}
private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
{
try
{
two(e, CreateDate());
}
catch (Exception Err)
{
MessageBox.Show(Err.Message);
}
}
这个可以,还有demo
{
try
{
//打印设置
PrinterSettings set = new PrinterSettings();
set.Collate = true;
set.Duplex = Duplex.Simplex;
PrintDocument pd = new PrintDocument();
pd.PrinterSettings = set;
pd.PrintPage += new PrintPageEventHandler(this.pd_printTable); //打印预览
PrintPreviewDialog view = new PrintPreviewDialog();
view.Name = "view";
view.UseAntiAlias = true;
view.Document = pd;
view.AutoScaleDimensions = new SizeF(290, 210);
view.ShowDialog();
_TableIndex = 0;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void pd_printTable(object sender, PrintPageEventArgs pea)
{
int y = 65;
int x = 20;
Font font = new Font("Arial", 9);
if (_TableIndex <= dt.Rows.Count - 1)
{
pea.Graphics.DrawString("客户编号:", font, Brushes.Black, x, y, new StringFormat());
pea.Graphics.DrawString("机种品号:", font, Brushes.Black, x, y + 15, new StringFormat());
pea.Graphics.DrawString("机种品番:", font, Brushes.Black, x, y + 30, new StringFormat());
pea.Graphics.DrawString("生产数量:", font, Brushes.Black, x + 120, y, new StringFormat());
pea.Graphics.DrawString("工序名称:", font, Brushes.Black, x + 180, y + 15, new StringFormat());
pea.Graphics.DrawString(dt.Rows[_TableIndex]["TAT002"].ToString(), font, Brushes.Black, x + 62, y, new StringFormat());
pea.Graphics.DrawString(dt.Rows[_TableIndex]["TAT006"].ToString(), font, Brushes.Black, x + 62, y + 15, new StringFormat());
pea.Graphics.DrawString(dt.Rows[_TableIndex]["TAT008"].ToString(), font, Brushes.Black, x + 62, y + 30, new StringFormat());
pea.Graphics.DrawString(dt.Rows[_TableIndex]["TAT009"].ToString(), font, Brushes.Black, x + 182, y, new StringFormat());
pea.Graphics.DrawString(dt.Rows[_TableIndex]["TAT011"].ToString(), font, Brushes.Black, x + 240, y + 15, new StringFormat());
pea.Graphics.DrawString(GetConvertString(dt.Rows[_TableIndex]["TAT003"].ToString(), "CODE128"), new Font("Code 128", 26), Brushes.Black, 20, 15, new StringFormat());
pea.Graphics.DrawString(dt.Rows[_TableIndex]["TAT003"].ToString(), font, Brushes.Black, 70, 50, new StringFormat()); _TableIndex++;
if (_TableIndex == dt.Rows.Count)
{
_TableIndex = 0;
pea.HasMorePages = false;
}
else
{
pea.HasMorePages = true;
}
}
}这是我前段时间写的一个打印条码的代码!
请参与,相信对你是有用的!
<input type="button" id="cmdPRINT" onclick="printReport()" value="[打印]" />
<script type="text/javascript" language="javascript">
//用于调用设置打印参数的方法和显示预览界面
function printReport(){
printBase();
//printBase("&w&b页码,&p/&P","&u&b&d");//默认
//window.print();
factory.printing.Preview(); //预览
//factory.printing.Print(false); //false为默认打印机,true为选择打印机
}
</script>
这个的确是不错但是也有个问题....超过打印页面的内容显示不出来的
运行出的错误是:错误 1 找不到类型或命名空间名称“PrintOptions”(是否缺少 using 指令或程序集引用?)
错误 3 当前上下文中不存在名称“CellButton”
怎么修改啊?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace testPrint
{
public partial class PrintOptions : Form
{
public PrintOptions()
{
InitializeComponent();
}
public PrintOptions(List<string> availableFields)
{
InitializeComponent(); foreach (string field in availableFields)
chklst.Items.Add(field, true);
} private void PrintOtions_Load(object sender, EventArgs e)
{
rdoAllRows.Checked = true;
chkFitToPageWidth.Checked = true;
} private void btnOK_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
this.Close();
} private void btnCancel_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Cancel;
this.Close();
} public List<string> GetSelectedColumns()
{
List<string> lst = new List<string>();
foreach (object item in chklst.CheckedItems)
lst.Add(item.ToString());
return lst;
} public string PrintTitle
{
get { return txtTitle.Text; }
} public bool PrintAllRows
{
get { return rdoAllRows.Checked; }
} public bool FitToPageWidth
{
get { return chkFitToPageWidth.Checked; }
} }
}在那个工程下 是有这个类的
错误 6 当前上下文中不存在名称“InitializeComponent”
错误 7 当前上下文中不存在名称“chklst”
错误 8 当前上下文中不存在名称“rdoAllRows”
错误 9 当前上下文中不存在名称“chkFitToPageWidth”
错误 10 当前上下文中不存在名称“chklst”
错误 11 当前上下文中不存在名称“txtTitle”
错误 12 当前上下文中不存在名称“rdoAllRows”
13 当前上下文中不存在名称“chkFitToPageWidth”
添加之后出错,这些都是什么意思啊?
这个你应该下了吧~ 你看看他的项目中的目录结构是什么样,参照写 就可以了
下面是当前项目中用到得,希望能给你带来帮助。好运!太多字了,回复不了,看下面的连接吧。http://www.ideaext.com/read.php/195.htm
超方便http://download.csdn.net/source/1021760
集英软件工作室是一家主攻.NET开发的软件工作室,提供各种组件与控件开发。 这个打印组件的高级版只需要70块,您就可以享受到便利的DataGridView打印服务。 “DataGridView打印精灵”可根据各种不同设置方案,进行DataGridView的快速打印。
使用这个DLL方法很简单,先需要添加对DLL的引用。再进行以下代码之添加:VB代码:
dim p as new JYWorks.打印精灵(DGV) 'DGV是一个要传入的Datagridview对象.
p.showdialog() '''或 p.show()C#代码:
JYWorks.打印精灵 printer=new JYWorks.打印精灵(DGV) 'DGV是一个要传入的Datagridview对象.
printer.showdialog() //或printer.show()您可以在Show出打印精灵窗体前设置以下属性:
Title属性:设置标题文本
SubTitle属性:设置子标题文本
FooterText属性:设置页脚文本。其他打印的设置可以在窗体中自由修改。
图片展示:
最近提供的组件:1、DataGridView加强版(可提供把数据导出到ACCESS、XLS、DBF、XML以及过滤与数据控件功能)2、DataGridView打印精灵高级版。3、.NET 3D-XCHART报表4、SQLSERVER-ACCESS数据互操作组件。工作室服务QQ 157864607手机 13633001878天翼手机:18978216557.net QQ讨论群: 12555220
DataGridview打印精灵高级测试版下载地址:http://sonoffreedom.googlepages.com/DGVP1.rar (使用次数有所限制。)
步骤2:添加新建项---数据集,添加的字段是DataGridView的字段
步骤3:添加一个水晶报表:Crystal报表(放在bin-->debug下)
步骤4:在报表窗体的load事件中写代码
代码如下:
Using CrystalDecisions.CrystalReports.Engine;//引用命名空间
ReportDocument myCrp;//定义一个报表
Public DataTable myDataTable;
//在该窗体的构造函数下实例化一个报表
myCrp=new ReportDocument();
双击crystalReportViewer然后在 Load事件写:
myCrp.load(Application.StartupPath+”./Reports/ CrystalName”);//指明实例化的报表文件的路径
myCrp.SetDataTable(myDataTable);//将myDataTable传递给实例化的报表
myCrp.Refresh();//刷新报表
this.crytalName.ReportSource=myCrp;//将实例化的报表设置为绑定到CrystalReportViewerh控件.在[导出到报表按钮里写]打印按钮:
private void button1_Click(object sender, EventArgs e)
{
Form1 myForm1 = new Form1();//实例化对象
myForm1.myDataTable = (DataTable)this.dgv_Read.DataSource ;//把dgvshow的数据源赋给实例化的那个窗体的数据表;
myForm1.Show();
//crystalReportViewer1 myCrystalReportView_PP = new crystalReportViewer1();//实例化对象
//myCrystalReportView_PP.myDataTable = (DataTable)this.dgv_Show.DataSource;//把dgvshow的数据源赋给实例化的那个窗体的数据表;
//myCrystalReportView_PP.Show();//显示
}