/// <summary>
/// Eason.Lin
/// 2024-02-15
/// add
/// RTF格式显示表格
/// </summary>
/// <param name="dataList"></param>
public static void ShowResult(List<List<string>> dataList)
{
try
{
//获取RichTextBox中内容
string originRtf = TMMTab.notePad.richTextBox1.Rtf;
originRtf = originRtf.Trim().TrimEnd('}');
// 构建RTF格式的表格字符串
StringBuilder rtf = new StringBuilder();
rtf.Append(@"\trowd\trbrdr\brdrw10\brdrs\brdrdb\tblw100\tblind100\tblcellsp0");
rtf.Append(@"\pard\ql"); // 开始并设置段落为左对齐
// 确定表格的最大列数
int maxColumns = dataList.Max(row => row.Count);
int cellWidth = 100 / maxColumns; //列宽度
// 设置所有列的位置
for (int j = 0; j < maxColumns; j++)
{
rtf.AppendFormat(@"\cellx{0}", (j + 1) * cellWidth);
}
//字符集编码判断(简体936/繁体950)
int codePage = Encoding.Default.CodePage;
for (int i = 0; i < dataList.Count; i++)
{
rtf.Append(@"\trowd\trbrdr\brdrw10\brdrs\brdrdb"); // 开始新行
for (int j = 0; j < maxColumns; j++)
{
// 添加单元格内容
if (j < dataList[i].Count)
{
var resultStr = dataList[i][j].ToString().Trim();
switch (codePage)
{
case 936: //简体
resultStr = Strings.StrConv(resultStr, VbStrConv.SimplifiedChinese, 0);
break;
case 950: //繁体
resultStr = Strings.StrConv(resultStr, VbStrConv.TraditionalChinese, 0);
break;
default:
break;
}
rtf.AppendFormat(" {0} ", resultStr);
}
else
rtf.Append(@" ");
// 结束单元格
rtf.Append(@"\cell");
}
// 结束行
rtf.Append(@"\row");
}
// 结束表格和段落
rtf.Append(@"\pard");
rtf.Append(@"}");
string resultRtf = originRtf + rtf.ToString();
TMMTab.notePad.richTextBox1.Rtf = resultRtf;
}
catch (Exception ex)
{
throw ex;
}
}
效果图如下:
新增:自动识别简体/繁体系统,调整对应字体