利用XML生成Word
传统生成word文档,一般是调用DCOM对象,来输出word,输出结果会比较慢,并且设计到对word操作的权限十分让人头疼。这里通过自己的摸索利用xml模板来输出word。
准备工作:定义个xml模板,将需要根据用户不同输出的特定的内容不同来定义模板。例如。并将xml文档放在指定的目录上。
代码段:主要对常规用的图片,字段和表格来根据实际情况来编辑。这里主要对图片和字段进行修改。
Codeprotected void Button1_Click(object sender, EventArgs e) { //取出所有需求的数据 string famc = "螺杆泵举升施工设计"; string faxx = "select falx,jh,sjrq,sjdw,sjr,byc1,byc2 from des_fanganxx where famc='" + famc + "'"; DataSet DSfaxx = DataHandle.ExecuteSQL(faxx); string fajcsj = "select * from des_fanganjcsj where famc='" + famc + "'"; DataSet DSjcsj = DataHandle.ExecuteSQL(fajcsj); string rgjd = DSjcsj.Tables[0].Rows[0]["rgjd"].ToString().Trim(); string fafcsj = "select cenghao,yczsh,pzl from des_fanganfcsj where famc='" + famc + "'"; DataSet DSfcsj = DataHandle.ExecuteSQL(fafcsj); string fagysj = "select * from des_fangangysj where famc='" + famc + "'"; DataSet DSgysj = DataHandle.ExecuteSQL(fagysj); string fagzsj = "select * from des_fangangzsj where famc='" + famc + "'"; DataSet DSgzsj = DataHandle.ExecuteSQL(fagzsj); string fasbqc = "select *,convert(numeric(10,0),sbsl) as sbsl1 from des_fangansbqc where famc='" + famc + "'"; DataSet DSsbqc = DataHandle.ExecuteSQL(fasbqc); string fagybz = "select * from des_fangangybzh where famc='" + famc + "' order by sx"; DataSet DSgybz = DataHandle.ExecuteSQL(fagybz); string fajsyq = "select * from des_fanganjsyq where famc='" + famc + "' order by sx"; DataSet DSjsyq = DataHandle.ExecuteSQL(fajsyq); FileInfo DotFileInfo = new FileInfo(Server.MapPath("xmlmodels/" + Session["yonghuid"].ToString().Trim() + ".xml")); if (!DotFileInfo.Exists) { FileInfo MasDot = new FileInfo(Server.MapPath("xmlmodels/model&gysj.xml")); MasDot.CopyTo(Server.MapPath("xmlmodels/" + Session["yonghuid"].ToString().Trim() + ".xml")); } StreamReader sr = new StreamReader(Server.MapPath("xmlmodels/" + Session["yonghuid"].ToString().Trim() + ".xml"),
System.Text.Encoding.UTF8); string str=sr.ReadToEnd(); sr.Close(); sr.Dispose(); if (str.Contains("t_jh")) { str = str.Replace("t_jh", DSfaxx.Tables[0].Rows[0]["jh"].ToString().Trim()).Replace("t_gysj", DSfaxx.Tables[0].Rows[0]
["falx"].ToString().Trim()).Replace("t_dw", DSfaxx.Tables[0].Rows[0]["sjdw"].ToString().Trim()).Replace("t_sjr", DSfaxx.Tables[0].
Rows[0]["sjr"].ToString().Trim()).Replace("t_rq", DSfaxx.Tables[0].Rows[0]["sjrq"].ToString().Trim()).Replace("t_ord", DSfaxx.
Tables[0].Rows[0]["byc1"].ToString().Trim()).Replace("t_csxm", DSfaxx.Tables[0].Rows[0]["byc2"].ToString().Trim()).
Replace("t_ceyl", DSjcsj.Tables[0].Rows[0]["ycydjkyl"].ToString().Trim()).Replace("t_zsyl", DSjcsj.Tables[0].Rows[0]["mqjkzsyl"].
ToString().Trim()).Replace("t_dcyl", DSjcsj.Tables[0].Rows[0]["dcyl"].ToString().Trim()).Replace("t_sjjkzsyl", DSjcsj.Tables[0]
.Rows[0]["sjjkzsyl"].ToString().Trim()).Replace("t_rgjd", DSjcsj.Tables[0].Rows[0]["rgjd"].ToString().Trim()).Replace("t_zsl", DSjcsj.
Tables[0].Rows[0]["mqzsl"].ToString().Trim()).Replace("t_ygnj", DSjcsj.Tables[0].Rows[0]["ygnj"].ToString().Trim()).Replace("t_fzqk",
DSjcsj.Tables[0].Rows[0]["jxfzqk"].ToString().Trim()).Replace("t_szjk", DSjcsj.Tables[0].Rows[0]["scjk"].ToString().Trim()).Replace
("t_bz", DSjcsj.Tables[0].Rows[0]["bz"].ToString().Trim()).Replace("t_szfx", DSjcsj.Tables[0].Rows[0]["szfxzl"].ToString().Trim())
.Replace("t_gyzl", DSgysj.Tables[0].Rows[0]["gyzl"].ToString().Trim()).Replace("t_zsfs", DSgysj.Tables[0].Rows[0]["zsfs"].
ToString().Trim()).Replace("t_kctgjgwz", DSgysj.Tables[0].Rows[0]["kctgjgwz"].ToString().Trim()).Replace("t_fgqkdw", DSgysj.
Tables[0].Rows[0]["fgqkdwz"].ToString().Trim()); } //System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(Server.MapPath("xmlmodels/" + Session["yonghuid"].
ToString().Trim() + ".bmp")); string bmpData = save_bitmap(rgjd); //using (MemoryStream ms = new MemoryStream()) //{ // //bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); // bmpData = Convert.ToBase64String(ms.ToArray()); //} //int iHeigth = bmp.Height; //int iWidth = bmp.Width; int iHeigth = 500; int iWidth = 450; bmpData = @"</w:t><w:pict><w:binData w:name='wordml://02000001.jpg'>" + bmpData + "</w:binData><v:shape
style='width:" + iWidth.ToString() + "px;height:" + iHeigth.ToString() + "px'>
<v:imagedata src='wordml://02000001.jpg' o:title='00'/></v:shape></w:pict><w:t>"; if (str.Contains("t_pic")) { str = str.Replace("t_pic", bmpData); } string cellsData = string.Empty; for (int i = 0; i < DSgybz.Tables[0].Rows.Count; i++) { cellsData += @"" + DSgybz.Tables[0].Rows[i]["sx"].ToString().Trim() + "." + DSgybz.Tables[0].Rows[i]["bzhnr"].
ToString().Trim() + "</w:t></w:r></w:p><w:p><w:pPr><w:rPr><w:rFonts w:fareast='黑体'/><w:sz w:val='28'/></w:rPr>
</w:pPr><w:r><w:rPr><w:rFonts w:fareast='黑体' w:hint='fareast'/><wx:font wx:val='黑体'/><w:sz w:val='28'/></w:rPr><w:t>"; } if (str.Contains("t_gybz")) { str = str.Replace("t_gybz", cellsData); } string jsyqData = string.Empty; for (int i = 0; i < DSjsyq.Tables[0].Rows.Count; i++) { jsyqData += @"" + DSjsyq.Tables[0].Rows[i]["sx"].ToString().Trim() + "." + DSjsyq.Tables[0].Rows[i]["jsyqnr"].ToString()
.Trim() + "</w:t></w:r></w:p><w:p><w:pPr><w:rPr><w:rFonts w:fareast='黑体'/><w:sz w:val='28'/></w:rPr></w:pPr><w:r><w:rPr>
<w:rFonts w:fareast='黑体' w:hint='fareast'/><wx:font wx:val='黑体'/><w:sz w:val='28'/></w:rPr><w:t>"; } if (str.Contains("t_yq")) { str = str.Replace("t_yq", jsyqData); } string fcsjData = string.Empty; for (int i = 0; i < DSfcsj.Tables[0].Rows.Count; i++) { fcsjData += @"" + DSfcsj.Tables[0].Rows[i]["yczsh"].ToString().Trim() + "</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW
w:w='2160' w:type='dxa'/><w:shd w:val='clear' w:color='auto' w:fill='auto'/><w:vAlign w:val='center'/></w:tcPr><w:p><w:pPr><w:jc
w:val='center'/><w:rPr><w:rFonts w:ascii='黑体' w:fareast='黑体' w:h-ansi='宋体'/><wx:font wx:val='黑体'/><w:sz w:val='24'/><w:sz-cs
w:val='24'/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii='黑体' w:fareast='黑体' w:h-ansi='宋体' w:hint='fareast'/><wx:font
wx:val='黑体'/><w:sz w:val='24'/><w:sz-cs w:val='24'/></w:rPr><w:t>" + DSfcsj.Tables[0].Rows[i]["pzl"].ToString().Trim() + "
</w:t></w:r></w:p></w:tc></w:tr><w:tr><w:trPr><w:trHeight w:val='453'/></w:trPr><w:tc><w:tcPr><w:tcW w:w='1017' w:type='dxa'/>
<w:gridSpan w:val='2'/><w:vmerge/><w:shd w:val='clear' w:color='auto' w:fill='auto'/><w:vAlign w:val='center'/></w:tcPr><w:p><w:pPr>
<w:jc w:val='center'/><w:rPr><w:rFonts w:ascii='黑体' w:fareast='黑体' w:h-ansi='宋体'/><wx:font wx:val='黑体'/><w:sz w:val='24'/><w:sz-cs
w:val='24'/></w:rPr></w:pPr></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w='2160' w:type='dxa'/><w:tcBorders><w:bottom w:val='single'
w:sz='4' wx:bdrwidth='10' w:space='0' w:color='auto'/></w:tcBorders><w:vAlign w:val='center'/></w:tcPr><w:p><w:pPr><w:jc w:val=
'center'/><w:rPr><w:rFonts w:ascii='黑体' w:fareast='黑体' w:h-ansi='宋体'/><wx:font wx:val='黑体'/><w:sz w:val='24'/><w:sz-cs
w:val='24'/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii='黑体' w:fareast='黑体' w:h-ansi='宋体' w:hint='fareast'/><wx:font wx:
val='黑体'/><w:sz w:val='24'/><w:sz-cs w:val='24'/></w:rPr><w:t>"; } if (str.Contains("t_zs")) { str = str.Replace("t_zs", fcsjData); } string sbqcData = string.Empty; for (int i = 0; i < DSsbqc.Tables[0].Rows.Count; i++) { sbqcData += @"" + Convert.ToString(i + 1) + "</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w='2146' w:type='dxa'/>
</w:tcPr><w:p><w:pPr><w:rPr><w:sz w:val='28'/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint='fareast'/><wx:font wx:val='宋体'/>
<w:sz w:val='28'/></w:rPr><w:t>" + DSsbqc.Tables[0].Rows[i]["sbgg"].ToString().Trim() + DSsbqc.Tables[0].Rows[i]["sbmc"]
.ToString().Trim() + "</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w='2146' w:type='dxa'/></w:tcPr><w:p><w:pPr><w:rPr>
<w:sz w:val='28'/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint='fareast'/><wx:font wx:val='宋体'/><w:sz w:val='28'/></w:rPr>
<w:t>" + DSsbqc.Tables[0].Rows[i]["sbsl1"].ToString().Trim() + DSsbqc.Tables[0].Rows[i]["sbdw"].ToString().Trim()
+ "</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w='2147' w:type='dxa'/></w:tcPr><w:p><w:pPr><w:rPr><w:sz w:val='28'/>
</w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint='fareast'/><wx:font wx:val='宋体'/><w:sz w:val='28'/></w:rPr><w:t>" + DSsbqc.
Tables[0].Rows[i]["tgdw"].ToString().Trim() + "</w:t></w:r></w:p></w:tc></w:tr><w:tr><w:tc><w:tcPr><w:tcW w:w='2146' w:type='dxa'/>
</w:tcPr><w:p><w:pPr><w:rPr><w:sz w:val='28'/></w:rPr></w:pPr><w:r><w:rPr><w:sz w:val='28'/></w:rPr><w:t>"; } if (str.Contains("t_sbxh")) { str = str.Replace("t_sbxh", sbqcData); } Response.ClearHeaders(); Response.ClearContent(); Response.Clear(); Response.Buffer = true; Response.Expires = -1; Response.ContentType = "application/octet-stream"; Response.AddHeader("Content-Disposition", "attachment;filename=ConstructionDesign.doc"); Response.Write(str); Response.Flush(); Response.Close(); Response.End(); } private string save_bitmap(string strrgjd) { string bmpData = string.Empty; int ChartHeight = 500; int ChartWidth = 450; double jdsd = 0; string famc; //famc = Server.UrlDecode(Request.QueryString["famc"]); famc = "螺杆泵举升施工设计"; string GetgzSql = "select * from des_fangangzsj where famc='" + famc.Trim() + "' order by sbwz,sbmc"; DataSet DSgz = DataHandle.ExecuteSQL(GetgzSql); jdsd = Convert.ToDouble(strrgjd.Trim()); Bitmap image = new Bitmap(ChartWidth, ChartHeight); Graphics Canvas; Canvas = Graphics.FromImage(image); Canvas.Clear(Color.White); try { Canvas.Clear(Color.White); Font font1 = new Font("宋体", 9); Brush brush = new SolidBrush(Color.Blue); Brush brush2 = new SolidBrush(Color.Black); Pen pen2 = new Pen(Color.Black, 1); Pen pen = new Pen(Color.Blue, 3); Pen pen3 = new Pen(Color.Blue, 1); //外围左边第一条线 Canvas.DrawLine(pen, 110, 40, 110, ChartHeight - 100); //外围右边最后一条线 Canvas.DrawLine(pen, 230, 40, 230, ChartHeight - 100); //顶上线 Canvas.DrawLine(pen2, 10, 40, 330, 40); //底部线 Canvas.DrawLine(pen2, 110, ChartHeight - 100, 230, ChartHeight - 100); //人工井底区域,需要输入参数井底深度,将深度与图长550进行比例尺度,根据工具的深度对各个工具进行位置定位 for (int i = 1; i < 13; i++) { Canvas.DrawLine(pen2, 110 + (i - 1) * 10, ChartHeight - 100, (110 + 10 * i), ChartHeight - 110); Canvas.DrawLine(pen2, 110 + (i - 1) * 10, ChartHeight - 110, (110 + 10 * i), ChartHeight - 100); } Canvas.DrawLine(pen3, 230, ChartHeight - 110, 340, ChartHeight - 110); Canvas.DrawString("人工井底:" + jdsd + "m", font1, brush2, 240, ChartHeight - 110); //循环生成工具说明 bool boolexist = false; if (DSgz.Tables[0].Rows.Count != 0) { #region 绘制工具说明,并考虑数值相差小于30的时候,左右排开 if (DSgz.Tables[0].Rows[0]["sbmc"].ToString().Trim() != "油管") { Canvas.DrawLine(pen3, 230, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[0]["sbwz"]
.ToString().Trim()) / jdsd), 340, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[0]["sbwz"].ToString().
Trim()) / jdsd)); Canvas.DrawString(DSgz.Tables[0].Rows[0]["sbmc"].ToString().Trim() + ":" + DSgz.Tables[0].Rows[0]["sbxh"].ToString().Trim()
+ DSgz.Tables[0].Rows[0]["sbwz"].ToString().Trim() + "m", font1, brush2, 240, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble
(DSgz.Tables[0].Rows[0]["sbwz"].ToString().Trim()) / jdsd)); } else { Canvas.DrawLine(pen3, 10, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[0]["sbwz"].
ToString().Trim()) / jdsd), 150, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[0]["sbwz"].ToString().
Trim()) / jdsd)); Canvas.DrawString(DSgz.Tables[0].Rows[0]["sbmc"].ToString().Trim() + ":" + DSgz.Tables[0].Rows[0]["sbxh"].ToString().Trim()
+ DSgz.Tables[0].Rows[0]["sbwz"].ToString().Trim() + "m", font1, brush2, 0, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble
(DSgz.Tables[0].Rows[0]["sbwz"].ToString().Trim()) / jdsd)); Canvas.DrawLine(pen2, 150, 40, 150, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[0]
["sbwz"].ToString().Trim()) / jdsd)); Canvas.DrawLine(pen2, 190, 40, 190, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[0]
["sbwz"].ToString().Trim()) / jdsd)); } for (int i = 1; i < DSgz.Tables[0].Rows.Count; i++) { if (DSgz.Tables[0].Rows[i]["sbmc"].ToString().Trim() == "油管") { Canvas.DrawLine(pen3, 10, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"]
.ToString().Trim()) / jdsd), 150, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"].ToString().
Trim()) / jdsd)); Canvas.DrawString(DSgz.Tables[0].Rows[i]["sbmc"].ToString().Trim() + ":" + DSgz.Tables[0].Rows[i]["sbxh"].ToString().Trim()
+ DSgz.Tables[0].Rows[i]["sbwz"].ToString().Trim() + "m", font1, brush2, 0, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble
(DSgz.Tables[0].Rows[i]["sbwz"].ToString().Trim()) / jdsd)); Canvas.DrawLine(pen2, 150, 40, 150, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]
["sbwz"].ToString().Trim()) / jdsd)); Canvas.DrawLine(pen2, 190, 40, 190, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]
["sbwz"].ToString().Trim()) / jdsd)); } else { boolexist = false; for (int j = 0; j < i; j++) { if (DSgz.Tables[0].Rows[j]["sbmc"].ToString().Trim() != "油管") { if (Math.Abs(Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"].ToString().Trim()) - Convert.ToDouble(DSgz.Tables[0].
Rows[j]["sbwz"].ToString().Trim())) < 30) { boolexist = true; break; } } } if (!boolexist) { Canvas.DrawLine(pen3, 230, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"].
ToString().Trim()) / jdsd), 340, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"].ToString().Trim()) / jdsd)); Canvas.DrawString(DSgz.Tables[0].Rows[i]["sbmc"].ToString().Trim() + ":" + DSgz.Tables[0].Rows[i]["sbxh"].ToString().Trim()
+ DSgz.Tables[0].Rows[i]["sbwz"].ToString().Trim()
+ "m", font1, brush2, 240, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"].ToString().Trim()) / jdsd)); } else { Canvas.DrawLine(pen3, 10, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"].
ToString().Trim()) / jdsd), 110, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"].ToString().Trim()) / jdsd)); Canvas.DrawString(DSgz.Tables[0].Rows[i]["sbmc"].ToString().Trim() + ":" + DSgz.Tables[0].Rows[i]["sbxh"].ToString().Trim()
+ DSgz.Tables[0].Rows[i]["sbwz"].ToString().Trim() + "m", font1, brush2, 0, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.
Tables[0].Rows[i]["sbwz"].ToString().Trim()) / jdsd)); } } } #endregion #region 绘制工具标识 for (int i = 0; i < DSgz.Tables[0].Rows.Count; i++) { //温控开关区域,输入开关的深度,与图长550,井底深度进行比例尺度计算 if (DSgz.Tables[0].Rows[i]["sbmc"].ToString().Trim() == "温控开关") { Canvas.DrawLine(pen2, 160, Convert.ToSingle(30 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"].
ToString().Trim()) / jdsd), 180, Convert.ToSingle(30 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"].ToString().
Trim()) / jdsd)); Canvas.DrawLine(pen2, 170, Convert.ToSingle(30 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"]
.ToString().Trim()) / jdsd), 170, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"].ToString().
Trim()) / jdsd)); Canvas.DrawLine(pen2, 146, Convert.ToSingle(30 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"]
.ToString().Trim()) / jdsd), 146, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"].ToString().
Trim()) / jdsd)); Canvas.DrawLine(pen2, 194, Convert.ToSingle(30 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"]
.ToString().Trim()) / jdsd), 194, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"].ToString().
Trim()) / jdsd)); Canvas.DrawLine(pen2, 146, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"]
.ToString().Trim()) / jdsd), 194, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"].ToString()
.Trim()) / jdsd)); } //扶正器区域,输入深度,与图长550,井底深度进行比例尺度计算 if (DSgz.Tables[0].Rows[i]["sbmc"].ToString().Trim() == "扶正器") { Canvas.DrawLine(pen2, 130, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"]
.ToString().Trim()) / jdsd + 5 - 2), 150, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"].ToString()
.Trim()) / jdsd)); Canvas.DrawLine(pen2, 130, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"]
.ToString().Trim()) / jdsd + 5 + 2), 150, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"].ToString()
.Trim()) / jdsd + 10)); Canvas.DrawLine(pen2, 210, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"]
.ToString().Trim()) / jdsd + 5 - 2), 190, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"].ToString()
.Trim()) / jdsd)); Canvas.DrawLine(pen2, 210, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"]
.ToString().Trim()) / jdsd + 5 + 2), 190, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"].ToString()
.Trim()) / jdsd + 10)); Canvas.DrawLine(pen2, 130, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"]
.ToString().Trim()) / jdsd + 5 - 2), 130, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"].ToString()
.Trim()) / jdsd + 5 + 2)); Canvas.DrawLine(pen2, 210, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"]
.ToString().Trim()) / jdsd + 5 - 2), 210, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"].ToString()
.Trim()) / jdsd + 5 + 2)); } //砂面区域,输入深度,与图长550,井底深度进行比例尺度计算 if (DSgz.Tables[0].Rows[i]["sbmc"].ToString().Trim() == "砂面区域") { for (int j = 1; j < 13; j++) { Canvas.DrawLine(pen2, 110 + (j - 1) * 10, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]
["sbwz"].ToString().Trim()) / jdsd), 110 + 10 * j, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"].
ToString().Trim()) / jdsd + 10)); } } //封隔器区域,输入深度,与图长550,井底深度进行尺度计算 if (DSgz.Tables[0].Rows[i]["sbmc"].ToString().Trim() == "封隔器") { Canvas.FillRectangle(brush2, 110, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"]
.ToString().Trim()) / jdsd), 40, 10); Canvas.FillRectangle(brush2, 190, Convert.ToSingle(40 + (ChartHeight - 100) * Convert.ToDouble(DSgz.Tables[0].Rows[i]["sbwz"]
.ToString().Trim()) / jdsd), 40, 10); } } #endregion } System.IO.MemoryStream ms = new System.IO.MemoryStream(); image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); bmpData = Convert.ToBase64String(ms.ToArray()); //string path = Server.MapPath("xmlmodels") + @"\" + Session["yonghuid"].ToString().Trim() + ".bmp"; //image.Save(path); } catch (Exception ms) { Response.Write(ms.Message); } return bmpData; }
输出的word
并且文档相应的字段已经替换。word输出不需要在服务器上安装office,并且速度比DCOM快很多。
利用XML生成Word相关推荐
- Java利用poi生成word(包含插入图片,动态表格,行合并)
Java利用poi生成word(包含插入图片,动态表格,行合并) 测试模板样式: 图表 1 Word生成结果: 图表 2 需要的jar包:(具体jar可自行去maven下载) Test测试类: imp ...
- Menu详解(二):利用XML生成菜单和子菜单
前言:上篇,我们说了有关代码生成菜单和子菜单的方法,这里我们再讲讲有关利用XML生成菜单和子菜单的问题. 业精于勤,荒于嬉,行成于思,毁于随 (日拱一卒) 系列文章: 1.<Menu详解(一): ...
- matlab 生成 word 表格,利用MATLAB生成Word文档.doc
利用MATLAB生成Word文档 function ceshi_Word %利用MATLAB生成Word文档 % ceshi_Word % % Copyright 2009 - 2010 xiezhh ...
- php实现生成word表格,TP5利用phpforword生成word表格文档
TP5利用phpforword生成word表格文档 2019-12-18 573 1.首先用composer安装下载 phpoffice/phpforwordcomposer require phpo ...
- matlab2015 word,利用MATLAB生成Word文档
<利用MATLAB生成Word文档>由会员分享,可在线阅读,更多相关<利用MATLAB生成Word文档(5页珍藏版)>请在人人文库网上搜索. 1.function ceshi_ ...
- java 使用xml生成word_Java+freemaker+xml生成word模板
date: 2017-04-15 21:34:56 Java利用freemaker包来操作生成word模板. 一个头疼的问题,了解了下xml. Java也是在学习的路上. 需求 自动化生成word报告 ...
- java后台利用模板生成Word文档提供前台下载
2016.12.06更新,java后台利用Apache poi生成Excel文档提供前台下载,博客链接http://blog.csdn.net/u010251278/article/details/5 ...
- SpringCloud之利用FTL生成Word报表并下载
1.首先,新建一个word文档:里面写需要下载的东西 2.编辑完后,另存为xml格式(不用管xml里面是什么),然后将后缀名xml改为ftl 3.这个ftl就是在Java代码中可生成word的模板文件 ...
- 利用XML生成Excel
先用Excel将我们要生成的表格设计好: 然后另存为XML表格: 将生成的Book1.xml复制到项目中并打开: 找到Table节点,将节点的ss:ExpandedRowCount="2&q ...
- java利用xml生成excel_JAVA环境中基于XML的一种EXCEL报表生成方法
JAVA环境中基于XML的一种EXCEL报表生 成方法 彭海波王哓东 昆明理工大学信息工程与自动化学院, 云南昆明 650051 摘要:本文探讨了JAVA语言环境下的基于XML的一种EXCEL报表实现 ...
最新文章
- 在AI Studio创建课程 : 2021 ANN课程
- css 引用otf文件,CSS-如何将OTF / TTF文件转换为EOT格式?
- cc.AudioSource
- GSM手机SMS编码解码
- unity人物旋转移动代码_游戏诞生之日02 - 美术篇 快速制作人物动画
- 自学dapp开发资料
- 2015.3.4 VS2005调用MFC dll时报错及解决
- 使用Windows服务发布WCF服务
- Sublim text3汉化
- ASCII码对照表 包含二进制、十进制、十六进制
- 找不到服务器或应用项目,word中文档时提示“找不到服务器应用程序、源文件或项目”有...-office软件找不到word文档,officewo...
- Android仿QQ列表滑动
- 机器学习相关学习视频
- Vue+SpringBoot的篮球社区平台
- android 开发帮助书籍pdf
- 格雷通路 算法 java,Java算法与数据结构教程
- MATLAB plot3绘制的不是三维图
- Mean-Shift算法
- verilog中always和initial的区别
- CorelDRAW怎么调整字间距
热门文章
- 2021-2027全球与中国SD WAN托管服务市场现状及未来发展趋势
- BZOJ 4399 魔法少女LJJ(线段树合并)
- Mac自带截图高级技巧
- 游戏挂机运行脚本方法
- 写代码时切换insert键,用来解决光标小黑块问题
- e4a浏览框本地HTML,E4A浏览器
- org.apache.felix.http.jetty %bundles.pluginTitle: Cannot start (org.osgi.framework.BundleException:
- 涨分神器-基于PPYOLOE的切图和拼图解决方案
- css实现半圆(上下左右半圆)
- git切换远程分支为develop