当前位置:首页 > IT技术 > DevExpress > 正文内容

DevExpress RichEditControl 插入表格和数据(附源码)

博主2020-07-06DevExpress3783

DevExpress RichEditControl 动态插入表格及数据demo源代码,简单例子,希望对你们有帮助

image.png

参考:https://www.cnblogs.com/wuhuacong/archive/2013/01/27/2878368.html

参考:https://download.csdn.net/detail/u012097590/9751938

using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using System.Collections.Generic;
using DevExpress.XtraRichEdit.Utils;
using DevExpress.XtraRichEdit.API.Native;
using DevExpress.Office.Utils;

namespace RichEditDisplayDataTable
{
    public partial class Form1 : DevExpress.XtraBars.Ribbon.RibbonForm
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void AppendDataTable(Document document, DataTable dataTable)
        {
            int dataTableRows = dataTable.Rows.Count;
            int dataTableColumns = dataTable.Columns.Count;
            List<string> columnsToDisplay = new List<string>();

            for (int i = 0; i < dataTableColumns; i++)
            {
                string name = dataTable.Columns[i].ColumnName;

                // Skip PrimaryKey columns
                if (!name.ToUpper().EndsWith("ID"))
                    columnsToDisplay.Add(name);
            }

            document.BeginUpdate();

            Table table = document.Tables.Create(document.Range.End, dataTableRows + 1, columnsToDisplay.Count, AutoFitBehaviorType.AutoFitToWindow);

            SetTableStyle(table);
            //段落参数设置
            ParagraphProperties pp = document.BeginUpdateParagraphs(table.FirstRow.Range);
            pp.Alignment = ParagraphAlignment.Center;
            document.EndUpdateParagraphs(pp);
            //字体设置
            CharacterProperties cp = document.BeginUpdateCharacters(table.FirstRow.Range);
            cp.FontName = "Courier New";
            cp.ForeColor = Color.White;
            document.EndUpdateCharacters(cp);

            DrawHeader(document, table, columnsToDisplay);

            // 填充表格内容
            table.BeginUpdate();//开启,以提高绘制效率
            table.ForEachCell(delegate (TableCell cell, int rowIndex, int cellIndex)
            {
                if (rowIndex > 0)
                {
                    document.InsertText(cell.Range.Start, dataTable.Rows[rowIndex - 1][columnsToDisplay[cellIndex]].ToString());
                }
            });
            table.EndUpdate();
            document.EndUpdate();
        }
        /// <summary>
        /// 绘制表头
        /// </summary>
        /// <param name="document"></param>
        /// <param name="table"></param>
        /// <param name="columnsToDisplay"></param>
        void DrawHeader(Document document, Table table, List<string> columnsToDisplay)
        {
            for (int i = 0; i < table.FirstRow.Cells.Count; i++)
            {
                table.FirstRow.Cells[i].BackgroundColor = Color.DarkBlue;
                table.FirstRow.Cells[i].VerticalAlignment = TableCellVerticalAlignment.Center;
            }

            // 填充表头
            for (int i = 0; i < columnsToDisplay.Count; i++)
            {
                document.InsertText(table[0, i].Range.Start, columnsToDisplay[i]);
            }
        }
        /// <summary>
        /// 设置表格属性
        /// </summary>
        /// <param name="table"></param>
        void SetTableStyle(Table table)
        {
            table.TableLayout = TableLayoutType.Fixed;

            table.Borders.InsideHorizontalBorder.LineColor = Color.DarkBlue;
            table.Borders.InsideVerticalBorder.LineColor = Color.DarkBlue;
            table.Borders.InsideHorizontalBorder.LineThickness = 0.5f;
            table.Borders.InsideHorizontalBorder.LineStyle = TableBorderLineStyle.Single;
            table.Borders.InsideVerticalBorder.LineThickness = 0.5f;
            table.Borders.InsideVerticalBorder.LineStyle = TableBorderLineStyle.Single;

            table.LeftPadding = Units.InchesToDocumentsF(0.01f);

            table.FirstRow.Height = Units.InchesToDocumentsF(0.5f);
            table.FirstRow.HeightType = HeightType.Exact;
        }

        private void barButtonItem1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            //多线程测试
            for (int i = 0; i < 5; i++)
            {
                System.Threading.Tasks.Task.Factory.StartNew(() =>
                {
                    BeginInvoke(new Action(() =>
                    {
                        AppendDataTable(richEditControl1.Document, ProductsTable.CreateData());
                    }));
                });
            }
        }
    }
}
点击阅读全文
《DevExpress RichEditControl 插入表格和数据(附源码)》.doc
将本文下载保存,方便收藏和打印
导出文档

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。