找回密码
 立即注册

QQ登录

只需一步,快速开始

lzechoca
论坛元老   /  发表于:2014-4-1 09:50  /   查看:5334  /  回复:9
为什么我用同样的代码直接打印的时候不出错误,但是导出到pdf文件的时候却提示:“在创建窗口句柄之前,不能在控件上调用Invoke或BeginInvoke”的对话框提示。我的打印代码如下:
                    //初始化打印控件
                    m_fpSpread = new FarPoint.Win.Spread.FpSpread();
                    m_fpSpread_Sheet = new FarPoint.Win.Spread.SheetView();
                    ((System.ComponentModel.ISupportInitialize)m_fpSpread).BeginInit();
                    ((System.ComponentModel.ISupportInitialize)m_fpSpread_Sheet).BeginInit();
                    m_fpSpread.AccessibleDescription = "";
                    m_fpSpread.BorderCollapse = FarPoint.Win.Spread.BorderCollapse.Collapse;
                    m_fpSpread.BorderStyle = System.Windows.Forms.BorderStyle.None;
                    m_fpSpread.ClipboardOptions = FarPoint.Win.Spread.ClipboardOptions.NoHeaders;
                    m_fpSpread.Dock = System.Windows.Forms.DockStyle.Fill;
                    m_fpSpread.Location = new System.Drawing.Point(0, 0);
                    m_fpSpread.Name = "m_fpSpread";
                    m_fpSpread.Sheets.AddRange(new FarPoint.Win.Spread.SheetView[] { m_fpSpread_Sheet });
                    m_fpSpread.Size = new System.Drawing.Size(1005, 413);
                    m_fpSpread.TabIndex = 0;
                    m_fpSpread_Sheet.Reset();
                    m_fpSpread_Sheet.SheetName = "Sheet1";
                    m_fpSpread_Sheet.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1;
                    m_fpSpread_Sheet.OperationMode = FarPoint.Win.Spread.OperationMode.ReadOnly;
                    m_fpSpread_Sheet.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1;
                    ((System.ComponentModel.ISupportInitialize)(this.m_fpSpread)).EndInit();
                    ((System.ComponentModel.ISupportInitialize)(this.m_fpSpread_Sheet)).EndInit();
                    m_fpSpread.Font = m_normalFont;
                    //设置打印选项
                    m_fpSpread.ActiveSheet.ColumnHeader.Visible = false;
                    m_fpSpread.ActiveSheet.RowHeader.Visible = false;
                    PrintInfo info = new PrintInfo();
                    info.Orientation = PrintOrientation.Landscape;//横向打印
                    //指定页边矩,按照普通页面设置:上下各2.54cm,左右个3.18/2cm
                    info.Margin = new PrintMargin(50, 25, 25, 25, 0, 0);
                    info.ShowBorder = false;//是否显示表格边框
                    info.ShowGrid = false;
                    info.PrintToPdf = true;
                    info.PdfWriteMode = FarPoint.Win.Spread.PdfWriteMode.New;
                    info.PdfWriteTo = FarPoint.Win.Spread.PdfWriteTo.File;
                    info.PdfFileName = dlg.FileName;
                    info.Preview = false;
                    info.AbortMessage = "打印结束";
                    //设置强制分页符
                    m_fpSpread.ActiveSheet.SetRowPageBreak(m_PrintRowNumEeveryPage, true);
                    m_fpSpread.ActiveSheet.PrintInfo = info;
                    //打印数据到内存
                    LoadPrintData();
                    //开始打印
                    m_fpSpread.PrintSheet(m_fpSpread.ActiveSheetIndex);

9 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2014-4-1 13:35:00
沙发
回复 1楼lzechoca的帖子

你好,
不好意思,根据当前代码我没能重现问题。能否把       LoadPrintData(); 这段代码给我?
回复 使用道具 举报
lzechoca
论坛元老   /  发表于:2014-4-2 07:49:00
板凳
int columns = 4 + m_ReportData._reportDetail._listColumns._listCols.Count * 3 + 7;
            int pageRows = m_PrintRowNumEeveryPage;//每页的行数
            int pages = m_ReportData._reportDetail._detailData.Count * 2 / 8;//每页固定显示4个孔道数据
            int rows = 15 * pages + m_ReportData._reportDetail._detailData.Count * 2 + 4 * pages;
            m_fpSpread.ActiveSheet.Rows.Count = rows;
            
            //设置具有特殊要求的行高和列宽,默认行高为20,列宽为60
            for(int pageNo = 0; pageNo<pages; pageNo++)
            {
                for (int row = pageNo*pageRows; row < pageNo*pageRows+pageRows; row++)
                {
                    if (row == 0 + pageNo * pageRows)//第1行
                        m_fpSpread.ActiveSheet.Rows[row].Height = 40;
                    else if (row == pageNo * pageRows + pageRows - 4 || row == pageNo * pageRows + pageRows - 3 || row == pageNo * pageRows + pageRows - 2)//倒数第2、3、4行
                        m_fpSpread.ActiveSheet.Rows[row].Height = 25;
                    else if (row == 12 + pageNo * pageRows)//详细数据表头行
                        m_fpSpread.ActiveSheet.Rows[row].Height = 35;
                    else if (row == pageNo * pageRows + pageRows - 1)//倒数第1行
                        m_fpSpread.ActiveSheet.Rows[row].Height = 25;
                    else if (row > pageNo * pageRows + 13 &amp;&amp; row < (pageNo * pageRows + pageRows - 4))//中间的数据区
                        m_fpSpread.ActiveSheet.Rows[row].Height = 35;
                    else
                        m_fpSpread.ActiveSheet.Rows[row].Height = 22;
                }
            }
            for (int col = 0; col < columns; col++)
            {
                if (col == 2 || col == 3)
                    m_fpSpread.ActiveSheet.Columns[col].Width = 45;
                else if(col == columns-1 ||col == columns-2||col == columns-3||col == columns-4||col == columns-5||col == columns-6||col == columns-7)
                    m_fpSpread.ActiveSheet.Columns[col].Width = 43;
                else
                    m_fpSpread.ActiveSheet.Columns[col].Width = 35;
            }
            //开始分页设置打印数据
            for(int pageNo = 0; pageNo<pages; pageNo++)
            {
                LoadPrintDataDetail(pageNo, pages);
                MakeTwoDimensionCode();
                LoadPrintDataHeader(pageNo, pages);
                LoadPrintDataRetail(pageNo, pages);
            }
        private void LoadPrintDataDetail(int pageNo, int pageNum)
        {
            _qrCodeString = string.Empty;
            _qrCodeString = m_ReportData._reportHead._dragDate + ";";//二维码字符串:张拉日期
            int columns = 4 + m_ReportData._reportDetail._listColumns._listCols.Count * 3 + 7;
            //=================================详细数据开始==============================
            int rowNo = pageNo * m_PrintRowNumEeveryPage+15;
            for (int i = 0 + pageNo * 4; i < m_ReportData._reportDetail._detailData.Count &amp;&amp; rowNo < (pageNo + 1) * m_PrintRowNumEeveryPage-4; i++, rowNo += 2)
            {
                DetailDataSource dds = m_ReportData._reportDetail._detailData;
                _qrCodeString += dds._no+"@"+dds._zongshenchangliang + ";";//二维码字符串:孔道编号@总伸长量
                //0列
                m_fpSpread.ActiveSheet.AddSpanCell(rowNo, 0, 2, 1);
                m_fpSpread.ActiveSheet.Cells[rowNo, 0].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo, 0].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo, 0].Value = dds._no;
                m_fpSpread.ActiveSheet.Cells[rowNo, 0].Border = m_siThinBorder.Border;
                m_fpSpread.ActiveSheet.Cells[rowNo, 0].CellType = m_tctTextNormal;
                //1列
                m_fpSpread.ActiveSheet.AddSpanCell(rowNo, 1, 1, 1);
                m_fpSpread.ActiveSheet.Cells[rowNo, 1].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo, 1].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo, 1].Value = dds._name;
                m_fpSpread.ActiveSheet.Cells[rowNo, 1].Border = m_siThinBorder.Border;
                m_fpSpread.ActiveSheet.Cells[rowNo, 1].CellType = m_tctTextNormal;
                m_fpSpread.ActiveSheet.AddSpanCell(rowNo + 1, 1, 1, 1);
                m_fpSpread.ActiveSheet.Cells[rowNo + 1, 1].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo + 1, 1].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo + 1, 1].Value = dds._name1;
                m_fpSpread.ActiveSheet.Cells[rowNo + 1, 1].Border = m_siThinBorder.Border;
                m_fpSpread.ActiveSheet.Cells[rowNo + 1, 1].CellType = m_tctTextNormal;
                //2,3列
                m_fpSpread.ActiveSheet.AddSpanCell(rowNo, 2, 1, 2);
                m_fpSpread.ActiveSheet.Cells[rowNo, 2].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo, 2].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo, 2].Value = dds._jackNo;
                m_fpSpread.ActiveSheet.Cells[rowNo, 2].Border = m_siThinBorder.Border;
                m_fpSpread.ActiveSheet.Cells[rowNo, 2].CellType = m_tctTextNormal;
                m_fpSpread.ActiveSheet.AddSpanCell(rowNo + 1, 2, 1, 2);
                m_fpSpread.ActiveSheet.Cells[rowNo + 1, 2].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo + 1, 2].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo + 1, 2].Value = dds._jackNo1;
                m_fpSpread.ActiveSheet.Cells[rowNo + 1, 2].Border = m_siThinBorder.Border;
                m_fpSpread.ActiveSheet.Cells[rowNo + 1, 2].CellType = m_tctTextNormal;
                //循环详细数据
                int colNo = 3;
                for (int j = 0; j < dds._listColsVal.Count; j++)
                {
                    ColumnData cd = dds._listColsVal[j];
                    //详细数据中的第1列
                    colNo++;
                    m_fpSpread.ActiveSheet.AddSpanCell(rowNo, colNo, 1, 1);
                    m_fpSpread.ActiveSheet.Cells[rowNo, colNo].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
                    m_fpSpread.ActiveSheet.Cells[rowNo, colNo].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
                    m_fpSpread.ActiveSheet.Cells[rowNo, colNo].Value = cd._col1Val;
                    m_fpSpread.ActiveSheet.Cells[rowNo, colNo].Border = m_siThinBorder.Border;
                    m_fpSpread.ActiveSheet.Cells[rowNo, colNo].CellType = m_tctTextNormal;
                    m_fpSpread.ActiveSheet.AddSpanCell(rowNo + 1, colNo, 1, 1);
                    m_fpSpread.ActiveSheet.Cells[rowNo + 1, colNo].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
                    m_fpSpread.ActiveSheet.Cells[rowNo + 1, colNo].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
                    m_fpSpread.ActiveSheet.Cells[rowNo + 1, colNo].Value = cd._col1Val1;
                    m_fpSpread.ActiveSheet.Cells[rowNo + 1, colNo].Border = m_siThinBorder.Border;
                    m_fpSpread.ActiveSheet.Cells[rowNo + 1, colNo].CellType = m_tctTextNormal;
                    //详细数据中的第2列
                    colNo++;
                    m_fpSpread.ActiveSheet.AddSpanCell(rowNo, colNo, 1, 1);
                    m_fpSpread.ActiveSheet.Cells[rowNo, colNo].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
                    m_fpSpread.ActiveSheet.Cells[rowNo, colNo].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
                    m_fpSpread.ActiveSheet.Cells[rowNo, colNo].Value = cd._col2Val;
                    m_fpSpread.ActiveSheet.Cells[rowNo, colNo].Border = m_siThinBorder.Border;
                    m_fpSpread.ActiveSheet.Cells[rowNo, colNo].CellType = m_tctTextNormal;
                    m_fpSpread.ActiveSheet.AddSpanCell(rowNo + 1, colNo, 1, 1);
                    m_fpSpread.ActiveSheet.Cells[rowNo + 1, colNo].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
                    m_fpSpread.ActiveSheet.Cells[rowNo + 1, colNo].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
                    m_fpSpread.ActiveSheet.Cells[rowNo + 1, colNo].Value = cd._col2Val1;
                    m_fpSpread.ActiveSheet.Cells[rowNo + 1, colNo].Border = m_siThinBorder.Border;
                    m_fpSpread.ActiveSheet.Cells[rowNo + 1, colNo].CellType = m_tctTextNormal;
                    //详细数据中的第3列
                    colNo++;
                    m_fpSpread.ActiveSheet.AddSpanCell(rowNo, colNo, 1, 1);
                    m_fpSpread.ActiveSheet.Cells[rowNo, colNo].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
                    m_fpSpread.ActiveSheet.Cells[rowNo, colNo].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
                    m_fpSpread.ActiveSheet.Cells[rowNo, colNo].Value = cd._col3Val;
                    m_fpSpread.ActiveSheet.Cells[rowNo, colNo].Border = m_siThinBorder.Border;
                    m_fpSpread.ActiveSheet.Cells[rowNo, colNo].CellType = m_tctTextNormal;
                    m_fpSpread.ActiveSheet.AddSpanCell(rowNo + 1, colNo, 1, 1);
                    m_fpSpread.ActiveSheet.Cells[rowNo + 1, colNo].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
                    m_fpSpread.ActiveSheet.Cells[rowNo + 1, colNo].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
                    m_fpSpread.ActiveSheet.Cells[rowNo + 1, colNo].Value = cd._col3Val1;
                    m_fpSpread.ActiveSheet.Cells[rowNo + 1, colNo].Border = m_siThinBorder.Border;
                    m_fpSpread.ActiveSheet.Cells[rowNo + 1, colNo].CellType = m_tctTextNormal;
                }
                //倒数第7列
                colNo++;
                m_fpSpread.ActiveSheet.AddSpanCell(rowNo, colNo, 1, 1);
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].Value = dds._lijinhuisuoliang;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].Border = m_siThinBorder.Border;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].CellType = m_tctTextNormal;
                m_fpSpread.ActiveSheet.AddSpanCell(rowNo + 1, colNo, 1, 1);
                m_fpSpread.ActiveSheet.Cells[rowNo + 1, colNo].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo + 1, colNo].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo + 1, colNo].Value = dds._lijinhuisuoliang1;
                m_fpSpread.ActiveSheet.Cells[rowNo + 1, colNo].Border = m_siThinBorder.Border;
                m_fpSpread.ActiveSheet.Cells[rowNo + 1, colNo].CellType = m_tctTextNormal;
                //倒数第6列
                colNo++;
                m_fpSpread.ActiveSheet.AddSpanCell(rowNo, colNo, 1, 1);
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].Value = dds._gongzuoduanshenchangliang;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].Border = m_siThinBorder.Border;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].CellType = m_tctTextNormal;
                m_fpSpread.ActiveSheet.AddSpanCell(rowNo + 1, colNo, 1, 1);
                m_fpSpread.ActiveSheet.Cells[rowNo + 1, colNo].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo + 1, colNo].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo + 1, colNo].Value = dds._gongzuoduanshenchangliang1;
                m_fpSpread.ActiveSheet.Cells[rowNo + 1, colNo].Border = m_siThinBorder.Border;
                m_fpSpread.ActiveSheet.Cells[rowNo + 1, colNo].CellType = m_tctTextNormal;
                //倒数第5列
                colNo++;
                m_fpSpread.ActiveSheet.AddSpanCell(rowNo, colNo, 2, 1);
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].Value = dds._shejizhanglali;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].Border = m_siThinBorder.Border;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].CellType = m_tctTextNormal;
                //倒数第4列
                colNo++;
                m_fpSpread.ActiveSheet.AddSpanCell(rowNo, colNo, 2, 1);
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].Value = dds._zhanglachangdu;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].Border = m_siThinBorder.Border;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].CellType = m_tctTextNormal;
                //倒数第3列
                colNo++;
                m_fpSpread.ActiveSheet.AddSpanCell(rowNo, colNo, 2, 1);
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].Value = dds._lilunshenchangliang;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].Border = m_siThinBorder.Border;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].CellType = m_tctTextNormal;
                //倒数第2列
                colNo++;
                m_fpSpread.ActiveSheet.AddSpanCell(rowNo, colNo, 2, 1);
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].Value = dds._zongshenchangliang;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].Border = m_siThinBorder.Border;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].CellType = m_tctTextNormal;
                //倒数第1列
                colNo++;
                m_fpSpread.ActiveSheet.AddSpanCell(rowNo, colNo, 2, 1);
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].Value = dds._shenchanglvwucha;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].Border = m_siThinBorder.Border;
                m_fpSpread.ActiveSheet.Cells[rowNo, colNo].CellType = m_tctTextNormal;
            }
            //=================================详细数据结束==============================
        }
回复 使用道具 举报
lzechoca
论坛元老   /  发表于:2014-4-2 07:50:00
地板
/// <summary>
        /// 打印表尾
        /// </summary>
        /// <param name="pageNo">当前页号</param>
        /// <param name="pageNum">总页数</param>
        private void LoadPrintDataRetail(int pageNo, int pageNum)
        {
            int columns = 4 + m_ReportData._reportDetail._listColumns._listCols.Count * 3 + 7;
            int rowNo = pageNo * m_PrintRowNumEeveryPage + m_PrintRowNumEeveryPage - 4;
            //=================================表尾开始==============================
            //========================================倒数第4行=====================================
            //倒数第4行0列,自检意见/内容
            int aver = (columns - 6) / 3;//均分
            m_fpSpread.ActiveSheet.AddSpanCell(rowNo, 0, 3, 2);
            m_fpSpread.ActiveSheet.Cells[rowNo, 0].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo, 0].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo, 0].Border = m_siThinBorder.Border;
            m_fpSpread.ActiveSheet.Cells[rowNo, 0].Value = "自检意见";
            m_fpSpread.ActiveSheet.AddSpanCell(rowNo, 2, 3, aver);
            m_fpSpread.ActiveSheet.Cells[rowNo, 2].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo, 2].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo, 2].Border = m_siThinBorder.Border;

            //倒数第4行,监理意见/内容
            m_fpSpread.ActiveSheet.AddSpanCell(rowNo, 2 + aver, 3, 2);
            m_fpSpread.ActiveSheet.Cells[rowNo, 2 + aver].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo, 2 + aver].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo, 2 + aver].Border = m_siThinBorder.Border;
            m_fpSpread.ActiveSheet.Cells[rowNo, 2 + aver].Value = "监理意见";
            m_fpSpread.ActiveSheet.AddSpanCell(rowNo, 2 + aver + 2, 3, aver);
            m_fpSpread.ActiveSheet.Cells[rowNo, 2 + aver + 2].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo, 2 + aver + 2].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo, 2 + aver + 2].Border = m_siThinBorder.Border;

            //倒数第4行,原始记录本/内容
            m_fpSpread.ActiveSheet.AddSpanCell(rowNo, 2 + aver + 2 + aver, 3, 1);
            m_fpSpread.ActiveSheet.Cells[rowNo, 2 + aver + 2 + aver].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo, 2 + aver + 2 + aver].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo, 2 + aver + 2 + aver].Border = m_siThinBorder.Border;
            m_fpSpread.ActiveSheet.Cells[rowNo, 2 + aver + 2 + aver].Value = "原始记录本";
            m_fpSpread.ActiveSheet.Cells[rowNo, 2 + aver + 2 + aver].CellType = m_tctTextTopDown;

            //倒数第4行,表号/内容
            m_fpSpread.ActiveSheet.AddSpanCell(rowNo, 2 + aver + 2 + aver + 1, 1, 1);
            m_fpSpread.ActiveSheet.Cells[rowNo, 2 + aver + 2 + aver + 1].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo, 2 + aver + 2 + aver + 1].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo, 2 + aver + 2 + aver + 1].Border = m_siThinBorder.Border;
            m_fpSpread.ActiveSheet.Cells[rowNo, 2 + aver + 2 + aver + 1].Value = "表号";
            m_fpSpread.ActiveSheet.AddSpanCell(rowNo, 2 + aver + 2 + aver + 1 + 1, 1, columns - 6 - 2 * aver);
            m_fpSpread.ActiveSheet.Cells[rowNo, 2 + aver + 2 + aver + 1 + 1].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo, 2 + aver + 2 + aver + 1 + 1].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo, 2 + aver + 2 + aver + 1 + 1].Border = m_siThinBorder.Border;
            //倒数第3行,册号/内容
            m_fpSpread.ActiveSheet.AddSpanCell(rowNo + 1, 2 + aver + 2 + aver + 1, 1, 1);
            m_fpSpread.ActiveSheet.Cells[rowNo + 1, 2 + aver + 2 + aver + 1].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo + 1, 2 + aver + 2 + aver + 1].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo + 1, 2 + aver + 2 + aver + 1].Border = m_siThinBorder.Border;
            m_fpSpread.ActiveSheet.Cells[rowNo + 1, 2 + aver + 2 + aver + 1].Value = "册号";
            m_fpSpread.ActiveSheet.AddSpanCell(rowNo + 1, 2 + aver + 2 + aver + 1 + 1, 1, columns - 6 - 2 * aver);
            m_fpSpread.ActiveSheet.Cells[rowNo + 1, 2 + aver + 2 + aver + 1 + 1].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo + 1, 2 + aver + 2 + aver + 1 + 1].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo + 1, 2 + aver + 2 + aver + 1 + 1].Border = m_siThinBorder.Border;
            //倒数第2行,页码/内容
            int aver1 = (columns - 7 - 2 * aver) / 2;
            m_fpSpread.ActiveSheet.AddSpanCell(rowNo + 2, 2 + aver + 2 + aver + 1, 1, 1);
            m_fpSpread.ActiveSheet.Cells[rowNo + 2, 2 + aver + 2 + aver + 1].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo + 2, 2 + aver + 2 + aver + 1].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo + 2, 2 + aver + 2 + aver + 1].Border = m_siThinBorder.Border;
            m_fpSpread.ActiveSheet.Cells[rowNo + 2, 2 + aver + 2 + aver + 1].Value = "页码";
            m_fpSpread.ActiveSheet.AddSpanCell(rowNo + 2, 2 + aver + 2 + aver + 1 + 1, 1, aver1);
            m_fpSpread.ActiveSheet.Cells[rowNo + 2, 2 + aver + 2 + aver + 1 + 1].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo + 2, 2 + aver + 2 + aver + 1 + 1].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo + 2, 2 + aver + 2 + aver + 1 + 1].Border = m_siThinBorder.Border;
            //倒数第2行,序号/内容
            m_fpSpread.ActiveSheet.AddSpanCell(rowNo + 2, 2 + aver + 2 + aver + 1 + 1 + aver1, 1, 1);
            m_fpSpread.ActiveSheet.Cells[rowNo + 2, 2 + aver + 2 + aver + 1 + 1 + aver1].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo + 2, 2 + aver + 2 + aver + 1 + 1 + aver1].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo + 2, 2 + aver + 2 + aver + 1 + 1 + aver1].Border = m_siThinBorder.Border;
            m_fpSpread.ActiveSheet.Cells[rowNo + 2, 2 + aver + 2 + aver + 1 + 1 + aver1].Value = "序号";
            m_fpSpread.ActiveSheet.AddSpanCell(rowNo + 2, 2 + aver + 2 + aver + 1 + 1 + aver1 + 1, 1, columns - 7 - 2 * aver - aver1);
            m_fpSpread.ActiveSheet.Cells[rowNo + 2, 2 + aver + 2 + aver + 1 + 1 + aver1 + 1].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo + 2, 2 + aver + 2 + aver + 1 + 1 + aver1 + 1].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
            m_fpSpread.ActiveSheet.Cells[rowNo + 2, 2 + aver + 2 + aver + 1 + 1 + aver1 + 1].Border = m_siThinBorder.Border;
            //=================================表尾结束==============================
            //===================最后1行=============================================
            //施工员
            aver = columns / 4;
            m_fpSpread.ActiveSheet.AddSpanCell(rowNo + 3, 0, 1, aver);
            m_fpSpread.ActiveSheet.Cells[rowNo + 3, 0].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Bottom;
            m_fpSpread.ActiveSheet.Cells[rowNo + 3, 0].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Left;
            m_fpSpread.ActiveSheet.Cells[rowNo + 3, 0].Value = "施工员:";
            m_fpSpread.ActiveSheet.Cells[rowNo + 3, 0].Border = m_siNoBorder.Border;
            //专业工程师
            m_fpSpread.ActiveSheet.AddSpanCell(rowNo + 3, aver, 1, aver);
            m_fpSpread.ActiveSheet.Cells[rowNo + 3, aver].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Bottom;
            m_fpSpread.ActiveSheet.Cells[rowNo + 3, aver].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Left;
            m_fpSpread.ActiveSheet.Cells[rowNo + 3, aver].Value = "专业工程师:";
            m_fpSpread.ActiveSheet.Cells[rowNo + 3, aver].Border = m_siNoBorder.Border;
            //质检工程师
            m_fpSpread.ActiveSheet.AddSpanCell(rowNo + 3, 2 * aver, 1, aver);
            m_fpSpread.ActiveSheet.Cells[rowNo + 3, 2 * aver].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Bottom;
            m_fpSpread.ActiveSheet.Cells[rowNo + 3, 2 * aver].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Left;
            m_fpSpread.ActiveSheet.Cells[rowNo + 3, 2 * aver].Value = "质检工程师:";
            m_fpSpread.ActiveSheet.Cells[rowNo + 3, 2 * aver].Border = m_siNoBorder.Border;
            //监理工程师
            m_fpSpread.ActiveSheet.AddSpanCell(rowNo + 3, 3 * aver, 1, columns - 3 * aver);
            m_fpSpread.ActiveSheet.Cells[rowNo + 3, 3 * aver].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Bottom;
            m_fpSpread.ActiveSheet.Cells[rowNo + 3, 3 * aver].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Left;
            m_fpSpread.ActiveSheet.Cells[rowNo + 3, 3 * aver].Value = "监理工程师:";
            m_fpSpread.ActiveSheet.Cells[rowNo + 3, 3 * aver].Border = m_siNoBorder.Border;
        }
回复 使用道具 举报
lzechoca
论坛元老   /  发表于:2014-4-2 08:00:00
5#
LoadPrintData();这个函数其实就是把需要打印的数据组织到内存当中。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-4-2 11:16:00
6#
回复 5楼lzechoca的帖子

确认下 3# 是 LoadPrintData 方法吧?
我使用你提供的代码做了Demo,并且我没有发现操作内存的代码(指的是存储在 m_fpspread 对象中吗?),能否在我的 Demo 基础上修改重现问题?

12268.zip (89.05 KB, 下载次数: 72)
回复 使用道具 举报
lzechoca
论坛元老   /  发表于:2014-4-2 14:23:00
7#
//this.Controls.Add(m_fpSpread);
我在你给的demo中注释掉了这行代码就会出现这个错误,因为我不想在界面上又显示一次导出到文件中的内容。
回复 使用道具 举报
lzechoca
论坛元老   /  发表于:2014-4-2 14:24:00
8#
我大概知道是什么原因了,但是我不想在界面上出现导出的内容该怎么做呢?
回复 使用道具 举报
lzechoca
论坛元老   /  发表于:2014-4-2 14:31:00
9#
好了,搞定了,非常感谢!

评分

参与人数 1满意度 +5 收起 理由
gsyxy100 + 5 老大,怎么解决的,放出来看一下!先谢谢了

查看全部评分

回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-4-2 16:05:00
10#
回复 9楼lzechoca的帖子

也感谢你反馈问题结果。谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部