在做一个试卷生成系统的时候遇到了一个需求,需要往richTextBox中添加带有固定格式的表格,表格中还有文字,明显用报表只能实现表格的动态添加,无法动态往表格里添加文字,于是乎就只能通过rtf编码来实现。下面粘出代码,及提示,给需要的人一点帮助!
string str = "{\\rtf1\\ansi\\ansicpg936\\deff0\\deflang1033\\deflangfe2052{\\fonttbl{\\f0\\fnil\\fprq2\\fcharset134";
str += "\\'cb\\'ce\\'cc\\'e5;}{\\f1\\fnil\\fcharset134 \\'cb\\'ce\\'cc\\'e5;}}\\viewkind4\\uc1\\trowd\\trgaph108\\trleft-108";
str += "\\trbrdrt\\brdrs\\brdrw10 \\trbrdrl\\brdrs\\brdrw10 \\trbrdrb\\brdrs\\brdrw10 \\trbrdrb\\brdrs\\brdrw10 ";
//下面几行是表格的列 以及宽度 宽度有一定规律:比如只有三行,最后一行为4000,第二行为2000,第一行为1000,那么 第三行的宽度为2000 第二和第一为1000。这个规律是试出来的。
str += "\\clbrdrt\\brdrw15\\brdrs\\clbrdrl\\brdrw15\\brdrs\\clbrdrb\\brdrw15\\brdrs\\clbrdrr\\brdrw15\\brdrs \\cellx1000";
str += "\\clbrdrt\\brdrw15\\brdrs\\clbrdrl\\brdrw15\\brdrs\\clbrdrb\\brdrw15\\brdrs\\clbrdrr\\brdrw15\\brdrs \\cellx2000";
str += "\\clbrdrt\\brdrw15\\brdrs\\clbrdrl\\brdrw15\\brdrs\\clbrdrb\\brdrw15\\brdrs\\clbrdrr\\brdrw15\\brdrs \\cellx3000";
str += "\\clbrdrt\\brdrw15\\brdrs\\clbrdrl\\brdrw15\\brdrs\\clbrdrb\\brdrw15\\brdrs\\clbrdrr\\brdrw15\\brdrs \\cellx4000";
str += "\\clbrdrt\\brdrw15\\brdrs\\clbrdrl\\brdrw15\\brdrs\\clbrdrb\\brdrw15\\brdrs\\clbrdrr\\brdrw15\\brdrs \\cellx10000";
//下面的cell 表示单元格 有几row就有几行 能添加文字
str += "\\pard\\intbl\\kerning2\\f0\\fs29 河粉\\cell 数据\\cell 电风扇\\cell 发送到\\cell 发送到\\row\\intbl\\cell\\cell\\cell\\row\\intbl\\cell\\cell\\cell\\cell 发送到\\row\\pard\\lang2052\\kerning0\\f1\\fs18\\par}";
richTextBox1.rtf=str.ToString();
这些编码都是调试好了的 ,拿去看看规律直接就能用。