找回密码
 立即注册

QQ登录

只需一步,快速开始

skyblue

新手上路

1

主题

1

帖子

21

积分

新手上路

积分
21
  • 20

    金币

  • 主题

  • 帖子

最新发帖
skyblue
新手上路   /  发表于:2015-12-17 16:57  /   查看:4369  /  回复:2
现在用spread设定一个打印模板,因为打印纸张大小,这个sheet中共有11行表格,0-5是表头,6-11行是动态填充数据,一页纸只能打印11行数据,
但是从数据库中获取的数据大于11行,需自动分页打印,但每页都需表头。
         PrintInfo pi = new PrintInfo();
            fprint = new FpSpread();
            FarPoint.Win.Spread.SheetViewCollection coll;
            coll = fprint.Sheets;
            pi.Orientation = PrintOrientation.Auto;
            pi.PageOrder = PrintPageOrder.Auto;
            pi.ShowPrintDialog = true;
            pi.PrintNotes = PrintNotes.AtEnd;
            pi.ShowColumnHeaders = false;
            pi.ShowGrid = true;
            pi.ShowPrintDialog = true;
            pi.ShowRowHeaders = false;
            pi.ShowShadows = true;
            pi.UseSmartPrint = true;
            pi.PrintNotes = PrintNotes.AtEnd;
            int b = dt.Rows.Count;
            int a = 6;
            for (int i = 0; i < b; i++)
            {
                fpSpread1.ActiveSheet.Cells[a, 1].Text = (i + 1).ToString();
                fpSpread1.ActiveSheet.Cells[a, 2].Text = dt.Rows[0].ToString();
                fpSpread1.ActiveSheet.Cells[a, 3].Text = dt.Rows[1].ToString();
                fpSpread1.ActiveSheet.Cells[a, 4].Text = dt.Rows[2].ToString();
                fpSpread1.ActiveSheet.Cells[a, 5].Text = dt.Rows[4].ToString();
                fpSpread1.ActiveSheet.Cells[a, 6].Text = dt.Rows[3].ToString();
                this.fpSpread1.ActiveSheet.Rows[a].VerticalAlignment = CellVerticalAlignment.Top;
                a = a + 1;

                if ((i + 1) % 6 == 0)
                {
                    coll.Add(CopySheet(fpSpread1.ActiveSheet, (i + 1).ToString()));
                    a = 6;
                }
            }
            for (int k = 0; k < coll.Count; k++)
            {
                fprint.Sheets.Add(coll[k]);
            }
            for (int j = 0; j < this.fprint.Sheets.Count; j++)
            {
                fprint.Sheets[j].PrintInfo = pi;
                fprint.PrintSheet(j);
            }

   fprint.Sheets.Add(coll[k]);  只保留最后一个的sheet数据,打印数据都是重复的

2 个回复

倒序浏览
frank.zhang
社区贡献组   /  发表于:2015-12-18 17:52:00
沙发
您好,

您的问题已经收到,目前的进度正在调查。
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-12-22 10:19:00
板凳
您好,

这个问题是PrintInfo数据没有更新导致的。
建议您每次都建立一个临时的spread,临时的PrintInfo 用于打印。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部