根据dataTable动态生成grid++report 的方法

/// <summary>
/// 生成grid++report模板
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public int GenerateNurModel(DataTable dt)
{

BNuringList BNu=new BNuringList ();
string NurName = dt.Rows[0]["NurName"].ToString();
string NurName1 = dt.Rows[0]["NurName1"].ToString();
string SpellNurName = GetSpellCode(NurName);
string SpellNurName1 = GetSpellCode(NurName1);
DataTable fielddt = BNu.FliterTree("-1",dt);
string filepath = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
filepath += "H11111\rpt\" + SpellNurName + "(" + SpellNurName1 + ")" + ".grf";
//@"F:" + NurName +"("+NurName1+")"+ ".grf"
// MessageBox.Show(filepath);
FileInfo myFile = new FileInfo(filepath);
StreamWriter sw = myFile.CreateText();
string str = "Object Report "
+ "Version='6.2.0.0' "
+ " Title='" + NurName + "' "
+ " PrintAsDesignPaper=F "
+ " Object Font "
+ " Name='宋体' "
+ " Size=105000,0 "
+ " Weight=400 "
+ " Charset=134 "
+ " End "
+ " Object Printer "
+ " Oriention=Landscape "
+ " LeftMargin=1 "
+ " TopMargin=2 "
+ " RightMargin=1 "
+ " BottomMargin=2 "
+ " End ";
str += " Object DetailGrid "
+ " CenterView=T "
+ " AppendBlankRow=T "
+ " Object Recordset "
+ " ConnectionString='Provider=SQLOLEDB.1;Persist Security Info=True;User"
+ "ID=sa;Initial Catalog=HISONE_V5;Data Source=DPT0103;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=DPT0103;Use Encryption for Data=False;Tag with column collation when possible=False' ";
//生成字段域
str += "Items Field ";
string ColumnContentCell = "";
string ItemsColumn = "";
string ColumnTitleCell = "";
string paramater = "";
for (int i = 0; i < fielddt.Rows.Count; i++)
{
string field = fielddt.Rows[i]["DataName"].ToString();
str += "Item "
+ " Name='" + EnCode16ASI(field) + "' "//生成字段EnCode16ASI
+" End ";

ItemsColumn += "Item "
+" Name='"+fielddt.Rows[i]["DataName"].ToString()+"' "
+" Width=1 "
+" End ";

ColumnContentCell += "Item "
+ " Column='" + fielddt.Rows[i]["DataName"].ToString() + "' "
//+ " DataField='" + fielddt.Rows[i]["DataName"].ToString() + "' "
+ " FreeCell=T "
+ "CanGrow=T "
+"CanShrink=T "
+"Items Control "
+" Item "
+ " Type=FieldBox " //修改他的输入框类型 列如:PictureBox
+" Name='PictureBox"+i+"' "
+" Dock=Fill "
+ " DataField='" + EnCode16ASI(field) + "' "//绑定字段和列
+" End "
+"End "
+" End ";

}
str += "End End ";
str += "Items Column " + ItemsColumn + "End ";
str += "Object ColumnContent "
+ "Height=0.73 "
+ " Object Font "
+ " Name='宋体' "
+ " Size=90000,0 "
+ " Weight=400 "
+ " Charset=134 "
+ " End "
+ " Items ColumnContentCell ";
str += ColumnContentCell;
str += "End End ";
//生成多表头
ColumnTitleCell += "Object ColumnTitle "
+ " Height=2.77813 "
+ " Object Font "
+ " Name='宋体' "
+ " Bold=T "
+ " Charset=134 "
+ " End ";

ColumnTitleCell+= StringMulTitle(dt, 0);
ColumnTitleCell += "End ";
str += ColumnTitleCell;
paramater+="Object PageHeader "
+ " Height=0 "
+ " End "
+ " Object PageFooter "
+ " Height=1.00542 "
+ " Items Control "
+ " Item "
+ " Type=RichTextBox "
+ " Name='RichTextBox1' "
+ " Left=16.5894 "
+ " Top=1.40229 "
+ " Width=2.4 "
+ " Height=0.5 "
+ " End "
+ " Item "
+ " Type=MemoBox "
+ " Name='MemoBox2' "
+ " Left=0.79375 "
+ " Top=0.211667 "
+ " Width=26.0085 "
+ " Height=0.608542 "
+ " TextAlign=MiddleCenter "
+ " Text='第 [#SystemVar(PageNumber)#] 页' "
+ " End "
+ " End "
+ "End "
+ "Items Parameter "
+ " Item "
+ " Name='病区' "
+ " End "
+ " Item "
+ " Name='床号' "
+ " End "
+ " Item "
+ " Name='姓名' "
+ " End "
+ " Item "
+ " Name='性别' "
+ " End "
+ " Item "
+ " Name='年龄' "
+ " End "
+ " Item "
+ " Name='住院号' "
+ " End "
+ " Item "
+ " Name='入院日期' "
+ " End "
+ " Item "
+ " Name='诊断' "
+ " End "
+ " Item "
+ " Name='科别' "
+ " End "
+ "End "
+ "Items ReportHeader "
+ " Item "
+ " Name='ReportHeader1' "
+ " Height=2.59292 "
+ " Items Control "
+ " Item "
+ " Type=MemoBox "
+ " Name='科别' "
+ " Top=1.5875 "
+ " Width=26.8023 "
+ " Height=1.00542 "
+ " Text='科别:[#科别#] 病区:[#病区#] 床号:[#床号#] 姓名:[#姓名#] 性别:[#性别#] 年龄:[#年龄#] 住院号:[#住院号#] 入院日期:[#入院日期#] 诊断:[#诊断#]' "
+ " End "
+ " Item "
+ " Type=MemoBox "
+ " Name='MemoBox1' "
+ " Dock=Top "
+ " Center=Horizontal "
+ " Height=1.5875 "
+ " Object Font "
+ " Name='宋体' "
+ " Size=157500,0 "
+ " Bold=T "
+ " Charset=134 "
+ " End "
+ " TextAlign=MiddleCenter "
+ " Text='"+NurName+"' "
+ " End "
+ " End "
+ " RepeatOnPage=T "
+ " End "
+ "End ";
str += paramater;
str += "End";
sw.WriteLine(str);
sw.Close();
return 0;

}

原文地址:https://www.cnblogs.com/tanhu/p/7306620.html