C# 打印DataTable 修正版 适应宽度超出一页 数据量超出一页的情况

这篇博客介绍了一个C#的修正代码,用于打印DataTable,解决了字段宽度超过一页和数据量超出一页时的显示错乱问题。提供了`PrintService`类,包括`PrintDataTable`方法,支持自定义打印机、适应横版打印,并能处理多页和宽度调整。
摘要由CSDN通过智能技术生成
网上找来的代码,但是修正了一些问题,特别是在字段超过一张纸宽度时判断不正确的问题感觉导致显示错乱。调用方式如下:
       PrintService printService = new PrintService();
            if (printService.PrintDataTable(GetDataTable())
                MessageBox.Show("打印成功!");
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing.Printing;
using System.Windows.Forms;
using System.IO;
using System.Drawing;
using System.Data;


namespace TaiZhang.Common
{
    internal class PrintService
    {
        public PrintService()
        {


        }


        #region Members //成员
        public String printName = String.Empty;
        public Font prtTextFont = new Font("Verdana", 10);
        public Font prtTitleFont = new Font("宋体", 10);
        private String[] titles = new String[0];
        public String[] Titles
        {
            set
            {
                titles = value as String[];
                if (null == titles)
                {
                    titles = new String[0];
                }
            }
            get
            {
                return titles;
            }
        }
        private Int32 left = 20;
        private Int32 top = 20;
        public Int32 Top { set { top = value; } get { return top; } }
        public Int32 Left { set { left = value; } get { return left; } }
        private DataTable printedTable;
        private Int32 pheight;
        private Int32 pWidth;
        private Int32 pindex;
        private Int32 curdgi;
        private Int32[] width;
        private Int32 rowOfDownDistance = 3;
        private Int32 rowOfUpDistance = 2;


        Int32 startColumnControls = 0;
        Int32 endColumnControls = 0;
        bool iMoreRow = false;//是否为超出的行
        bool iMoreColumn = false;//是否为超出的列


        #endregion


        #region Method for PrintDataTable //打印数据集
        /// <summary>
        /// 打印数据集(无用)
        /// </sum
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值