c# 标签打印
写个小程序,用于打印标签,如图
但每次都少打了最后一条,就退纸了。 是什么问题啊
另外,每次预览都有之前预览的信息存在,怎么清除呢?
写个小程序,用于打印标签,如图
但每次都少打了最后一条,就退纸了。 是什么问题啊
另外,每次预览都有之前预览的信息存在,怎么清除呢?
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.OleDb; using System.Drawing; using System.Drawing.Printing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading; using System.Xml; using System.IO; namespace 标签打印 { public partial class Form1 : Form { int i = 0; int j = 0; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //打开EXCEL| //OpenFileDialog file = new OpenFileDialog(); openFileDialog1.Filter = "xls文件(*.xls)|*.xls|xlsx文件(*.xlsx)|*.xlsx||"; if (openFileDialog1.ShowDialog() == DialogResult.OK) { string confstring = openFileDialog1.FileName; string strScource = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + confstring + ";Extended Properties=Excel 8.0"; OleDbConnection conn = new OleDbConnection(strScource); string sqlstring = @"select * from [Sheet1$]"; OleDbDataAdapter adaper = new OleDbDataAdapter(sqlstring, conn); DataSet da = new DataSet(); adaper.Fill(da); this.dataGridView1.DataSource = da.Tables[0]; } //数据导入结束,设置下列宽 this.dataGridView1.Columns[4].Width = 150; this.dataGridView1.Columns[5].Width = 180; } private void Form1_Load(object sender, EventArgs e) { this.dataGridView1.AllowUserToAddRows = false; //删除空白条 } private void button5_Click(object sender, EventArgs e) { this.Close(); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (MessageBox.Show("确认退出吗", "信息提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) e.Cancel = true; } private void button2_Click(object sender, EventArgs e) { if (dataGridView1.Rows.Count == 0) { MessageBox.Show("请先导入数据!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } //先测试下预览 //一英寸=2.54厘米,这里是百分之一英寸,目前的纸张是长12厘米,宽9厘米354,472 this.printDocument1.DefaultPageSettings.PaperSize = new PaperSize("Custum", 354, 472); //354,472 this.printDocument1.OriginAtMargins = true; this.printDocument1.DefaultPageSettings.Margins.Left = 20; this.printDocument1.DefaultPageSettings.Margins.Top = 1 ; this.printDocument1.DefaultPageSettings.Margins.Bottom = 0; this.printDocument1.PrintPage += new PrintPageEventHandler(this.my_print); printPreviewDialog1.Document = printDocument1; DialogResult result = printPreviewDialog1.ShowDialog(); } private void my_print(object sender, System.Drawing.Printing.PrintPageEventArgs e) { int aa = 0; string zh; string ygbh; string ygname; string bmname; int jls; int a1 = 1, a2 = 14, a3 = 14, a4 = 26; int zys; //总页数 int ys=1; //当前页数 // jls = this.dataGridView1.Rows.Count; zys = Convert.ToInt16 ( Math.Ceiling(Convert.ToDouble(jls) / 14.0)); //算下总页数 //MessageBox.Show(jls.ToString(), "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); //准备遍历记录 // if (i ==jls) // { // MessageBox.Show("sss"); // return; // } // else // { for (int m = 1; m <= 14; m++) { if (i == jls) { i = 0; j = 0; e.HasMorePages = false; return; //这个是在循环体内,发现记录超了,强制出来 } zh = this.dataGridView1.Rows[i].Cells[5].Value.ToString(); ygbh = this.dataGridView1.Rows[i].Cells[1].Value.ToString(); ygname = this.dataGridView1.Rows[i].Cells[2].Value.ToString(); bmname = this.dataGridView1.Rows[i].Cells[4].Value.ToString(); if (i % 2 == 0) { e.Graphics.DrawString(zh, new Font(new FontFamily("宋体"), 9), System.Drawing.Brushes.Black,1, a1); e.Graphics.DrawString(ygbh, new Font(new FontFamily("宋体"), 9), System.Drawing.Brushes.Black, 1, a2); e.Graphics.DrawString(ygname, new Font(new FontFamily("宋体"), 9), System.Drawing.Brushes.Black, 56, a3); //(左右,上下) e.Graphics.DrawString(bmname, new Font(new FontFamily("宋体"), 9), System.Drawing.Brushes.Black, 1, a4); e.Graphics.DrawString(i.ToString(), new Font(new FontFamily("宋体"), 9), System.Drawing.Brushes.Black, 120, a4); j = j + 1; i = i + 1; } else { e.Graphics.DrawString(zh, new Font(new FontFamily("宋体"), 9), System.Drawing.Brushes.Black, 165, a1); e.Graphics.DrawString(ygbh, new Font(new FontFamily("宋体"), 9), System.Drawing.Brushes.Black, 165, a2); e.Graphics.DrawString(ygname, new Font(new FontFamily("宋体"), 9), System.Drawing.Brushes.Black, 235, a3); //(左右,上下) e.Graphics.DrawString(bmname, new Font(new FontFamily("宋体"), 9), System.Drawing.Brushes.Black, 165, a4); e.Graphics.DrawString(i.ToString (), new Font(new FontFamily("宋体"), 9), System.Drawing.Brushes.Black, 265, a4); a1 = a1 + 66; a2 = a2 + 66; a3 = a3 + 66; a4 = a4 + 66; j = j + 1; i = i + 1; } } // } /*** if (j== 14) //打了14条,换 页 { //打开多页属性 // MessageBox.Show(zys.ToString(), "11111信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); // MessageBox.Show(ys.ToString(), "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); ys = ys + 1; j = 0; //清零 if (ys == zys) { i = 0; e.HasMorePages = false; //打关闭多页属性 //return; } else { e.HasMorePages = true; MessageBox.Show(ys.ToString ()); } } ***/ //MessageBox.Show(j.ToString()); /*** if (j==14) { j = 0; MessageBox.Show(i.ToString()); if (i ==jls) { i = 0; e.HasMorePages = false; return; } else { // MessageBox.Show("ddddddddddd"); e.HasMorePages = true; } } ****/ //MessageBox.Show(i.ToString()); if (i == jls) { i = 0; e.HasMorePages = false; return; } if (j == 14) { j = 0; e.HasMorePages = true; } } private void button4_Click(object sender, EventArgs e) { /// MessageBox.Show(Math.Ceiling().ToString(), "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } }
解决方案
30
这样的不科学,要成卷的就不会这样了
5
检查windows打印设置,选中默认打印机,从属性进入
5
应该是打印机纸张设置问题,按一下送纸键看看能不能正确出一张纸。还有打印机应该是碳带打印机吧?假如是的用这种两列的纸容易测试错误的。