如何用DataTable生成RTF table
来源:互联网 发布:淘宝1万多的充气娃娃 编辑:程序博客网 时间:2024/04/29 18:25
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Turf.Utils
{
public class RTFConvertUtil
{
public static string Convertdatatable2rtf(DataTable dataresults)
{
string results = @"{\rtf1\ansi\deff0\fs18 ";
results += @"\trowd\trautofit1 ";int counter = 1;
foreach (DataColumn myProperty in dataresults.Columns)
{
results += @"\cellx" + (counter * 2000) + " ";
counter++;
}foreach (DataColumn myProperty in dataresults.Columns)
results += myProperty.ColumnName + @"\cell ";
results += @"\row ";
foreach (DataRow DR in dataresults.Rows)
{
results += @"\trowd\trautofit1 ";counter = 1;
foreach (DataColumn myProperty in dataresults.Columns)
{
results += @"\cellx" + (counter * 2000) + " ";counter++;
}foreach (DataColumn myProperty in dataresults.Columns)
results += DR[myProperty].ToString() + @"\cell ";results += @"\row ";
}results += "}";
return results;
}
public static PasteDataModel ConvertTable2PasteData(DataTable dt)
{
StringBuilder sbRTFText = new StringBuilder(@"{\rtf1\fbidis\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Calibri;}{\f1\fnil\fcharset0 Microsoft Sans Serif;}}");
StringBuilder sbPlainText = new StringBuilder();
// Width will be in TWIPS
int LeftColWidth = 10000/dt.Columns.Count;
int OtherColumnsWidth = 10000/dt.Columns.Count;
int ColumnPosition;#region Add Table Header
// STARTING TABLE ROW
sbRTFText.Append(@"{\trowd\trleft0\trgaph-0\trbrdrt\brdrs\brdrw15\brdrcf0\trbrdrb\brdrs\brdrw15\brdrcf0\trbrdrr\brdrs\brdrw15\brdrcf0\trbrdrl\brdrs\brdrw15\brdrcf0\trbrdrv\brdrs\brdrw15\brdrcf0\trbrdrh\brdrs\brdrw15\brdrcf0\trftsWidth1\trftsWidthB3\trpaddl10\trpaddr10\trpaddb10\trpaddt10\trpaddfl3\trpaddfr3\trpaddft3\trpaddfb3\trql\ltrrow");
// LEFT COLUMN DEFINITION
ColumnPosition = LeftColWidth;
sbRTFText.Append(@"\clvertalt\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\clftsWidth3\clwWidth" + LeftColWidth.ToString() + @"\cellx" + ColumnPosition.ToString());
// OTHER COLUMNS DEFINITION
for (int j = 1; j < dt.Columns.Count; j++)
{
ColumnPosition += OtherColumnsWidth;
sbRTFText.Append(@"\clvertalt\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\clftsWidth3\clwWidth" + OtherColumnsWidth.ToString() + @"\cellx" + ColumnPosition.ToString());
}sbRTFText.Append("{");
// PLACING DATA
for (int j = 0; j < dt.Columns.Count; j++)
{
sbRTFText.Append(@"{\fs22\f3\b\intbl {\ltrch " + dt.Columns[j].Caption.ToString() + @"}\li0\ri0\sa0\sb0\fi0\ql\sl15\slmult0\cell}");
}sbRTFText.Append("}");
// ENDING TABLE ROW
sbRTFText.Append(@"{\trowd\trleft0\trgaph-0\trbrdrt\brdrs\brdrw15\brdrcf0\trbrdrb\brdrs\brdrw15\brdrcf0\trbrdrr\brdrs\brdrw15\brdrcf0\trbrdrl\brdrs\brdrw15\brdrcf0\trbrdrv\brdrs\brdrw15\brdrcf0\trbrdrh\brdrs\brdrw15\brdrcf0\trftsWidth1\trftsWidthB3\trpaddl10\trpaddr10\trpaddb10\trpaddt10\trpaddfl3\trpaddfr3\trpaddft3\trpaddfb3\trql\ltrrow");
// LEFT COLUMN
ColumnPosition = LeftColWidth;
sbRTFText.Append(@"\clvertalt\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\clftsWidth3\clwWidth" + LeftColWidth.ToString() + @"\cellx" + ColumnPosition.ToString());
// OTHER COLUMNS
for (int j = 1; j < dt.Columns.Count; j++)
{
ColumnPosition += OtherColumnsWidth;
sbRTFText.Append(@"\clvertalt\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\clftsWidth3\clwWidth" + OtherColumnsWidth.ToString() + @"\cellx" + ColumnPosition.ToString());
}
sbRTFText.Append(@"\row}}");
#endregion
#region Add Cell Content
DataRow dr;
for (int i = 0; i < dt.Rows.Count; i++)
{
dr = dt.Rows[i];
// STARTING TABLE ROW
sbRTFText.Append(@"{\trowd\trleft0\trgaph-0\trbrdrt\brdrs\brdrw15\brdrcf0\trbrdrb\brdrs\brdrw15\brdrcf0\trbrdrr\brdrs\brdrw15\brdrcf0\trbrdrl\brdrs\brdrw15\brdrcf0\trbrdrv\brdrs\brdrw15\brdrcf0\trbrdrh\brdrs\brdrw15\brdrcf0\trftsWidth1\trftsWidthB3\trpaddl10\trpaddr10\trpaddb10\trpaddt10\trpaddfl3\trpaddfr3\trpaddft3\trpaddfb3\trql\ltrrow");
// LEFT COLUMN DEFINITION
ColumnPosition = LeftColWidth;
sbRTFText.Append(@"\clvertalt\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\clftsWidth3\clwWidth" + LeftColWidth.ToString() + @"\cellx" + ColumnPosition.ToString());
// OTHER COLUMNS DEFINITION
for (int j = 1; j < dt.Columns.Count; j++)
{
ColumnPosition += OtherColumnsWidth;
sbRTFText.Append(@"\clvertalt\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\clftsWidth3\clwWidth" + OtherColumnsWidth.ToString() + @"\cellx" + ColumnPosition.ToString());
}sbRTFText.Append("{");
// PLACING DATA
for (int j = 0; j < dt.Columns.Count; j++)
{
sbRTFText.Append(@"{\fs22\f3\intbl {\ltrch " + dr[j].ToString() + @"}\li0\ri0\sa0\sb0\fi0\ql\sl15\slmult0\cell}");
}sbRTFText.Append("}");
// ENDING TABLE ROW
sbRTFText.Append(@"{\trowd\trleft0\trgaph-0\trbrdrt\brdrs\brdrw15\brdrcf0\trbrdrb\brdrs\brdrw15\brdrcf0\trbrdrr\brdrs\brdrw15\brdrcf0\trbrdrl\brdrs\brdrw15\brdrcf0\trbrdrv\brdrs\brdrw15\brdrcf0\trbrdrh\brdrs\brdrw15\brdrcf0\trftsWidth1\trftsWidthB3\trpaddl10\trpaddr10\trpaddb10\trpaddt10\trpaddfl3\trpaddfr3\trpaddft3\trpaddfb3\trql\ltrrow");
// LEFT COLUMN
ColumnPosition = LeftColWidth;
sbRTFText.Append(@"\clvertalt\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\clftsWidth3\clwWidth" + LeftColWidth.ToString() + @"\cellx" + ColumnPosition.ToString());
// OTHER COLUMNS
for (int j = 1; j < dt.Columns.Count; j++)
{
ColumnPosition += OtherColumnsWidth;
sbRTFText.Append( @"\clvertalt\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\clftsWidth3\clwWidth" + OtherColumnsWidth.ToString() + @"\cellx" + ColumnPosition.ToString());
sbPlainText.Append(dr[j]).Append("\t");
}
sbRTFText.Append(@"\row}}");
sbPlainText.AppendLine();
}
#endregion
sbRTFText.Append("}");
return new PasteDataModel(){RtfText = sbRTFText.ToString(),PlainText=sbPlainText.ToString()};
}
}public class PasteDataModel
{
public string PlainText { get; set; }
public string RtfText { get; set; }
}
}
- 如何用DataTable生成RTF table
- 如何用后台cs(DataTable) 生成(写)XML文件(流)
- 如何用公式在RTF域中自动创建附件
- 如何用公式在RTF域中自动创建附件
- 如何用C#把Doc文档转换成rtf格式
- 动态生成HTMLTable,table,DataTable
- 如何用Gruff生成图表
- 如何用doxygen生成文档
- 如何用Gruff生成图表
- 如何用.NET生成二维码?
- 如何用proto生成文件
- 如何用MYSQL 做 Pivot Table?
- 如何用mysqldump --ignore-table多个表
- 如何用CSS定义table边框
- 如何用div隐藏table中的某几行呢?
- 根据DataTable 生成 相应的table c#
- 如何用jsp生成excel文件
- 如何用动态网页生成静态网页
- 设计模式之责任链模式
- hdu 2036 改革春风吹满地(叉积求多边形面积)
- Chaptert1--Arrays_and_Strings
- 数据结构-Hanoi塔问题
- c++学习之友元
- 如何用DataTable生成RTF table
- 数据结构-用链表函数实现链表节点的插入
- UVA 12541 Birthdates 解题报告
- php使用apc
- poj1068
- 数据结构-用链表函数实现链表的有序合并
- Linux开发基础②shell
- hdu1226 超级密码 (BFS,里面用了大数取余原理)
- JSTL 核心标签库 使用