传统生成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相关推荐

  1. Java利用poi生成word(包含插入图片,动态表格,行合并)

    Java利用poi生成word(包含插入图片,动态表格,行合并) 测试模板样式: 图表 1 Word生成结果: 图表 2 需要的jar包:(具体jar可自行去maven下载) Test测试类: imp ...

  2. Menu详解(二):利用XML生成菜单和子菜单

    前言:上篇,我们说了有关代码生成菜单和子菜单的方法,这里我们再讲讲有关利用XML生成菜单和子菜单的问题. 业精于勤,荒于嬉,行成于思,毁于随 (日拱一卒) 系列文章: 1.<Menu详解(一): ...

  3. matlab 生成 word 表格,利用MATLAB生成Word文档.doc

    利用MATLAB生成Word文档 function ceshi_Word %利用MATLAB生成Word文档 % ceshi_Word % % Copyright 2009 - 2010 xiezhh ...

  4. php实现生成word表格,TP5利用phpforword生成word表格文档

    TP5利用phpforword生成word表格文档 2019-12-18 573 1.首先用composer安装下载 phpoffice/phpforwordcomposer require phpo ...

  5. matlab2015 word,利用MATLAB生成Word文档

    <利用MATLAB生成Word文档>由会员分享,可在线阅读,更多相关<利用MATLAB生成Word文档(5页珍藏版)>请在人人文库网上搜索. 1.function ceshi_ ...

  6. java 使用xml生成word_Java+freemaker+xml生成word模板

    date: 2017-04-15 21:34:56 Java利用freemaker包来操作生成word模板. 一个头疼的问题,了解了下xml. Java也是在学习的路上. 需求 自动化生成word报告 ...

  7. java后台利用模板生成Word文档提供前台下载

    2016.12.06更新,java后台利用Apache poi生成Excel文档提供前台下载,博客链接http://blog.csdn.net/u010251278/article/details/5 ...

  8. SpringCloud之利用FTL生成Word报表并下载

    1.首先,新建一个word文档:里面写需要下载的东西 2.编辑完后,另存为xml格式(不用管xml里面是什么),然后将后缀名xml改为ftl 3.这个ftl就是在Java代码中可生成word的模板文件 ...

  9. 利用XML生成Excel

    先用Excel将我们要生成的表格设计好: 然后另存为XML表格: 将生成的Book1.xml复制到项目中并打开: 找到Table节点,将节点的ss:ExpandedRowCount="2&q ...

  10. java利用xml生成excel_JAVA环境中基于XML的一种EXCEL报表生成方法

    JAVA环境中基于XML的一种EXCEL报表生 成方法 彭海波王哓东 昆明理工大学信息工程与自动化学院, 云南昆明 650051 摘要:本文探讨了JAVA语言环境下的基于XML的一种EXCEL报表实现 ...

最新文章

  1. 在AI Studio创建课程 : 2021 ANN课程
  2. css 引用otf文件,CSS-如何将OTF / TTF文件转换为EOT格式?
  3. cc.AudioSource
  4. GSM手机SMS编码解码
  5. unity人物旋转移动代码_游戏诞生之日02 - 美术篇 快速制作人物动画
  6. 自学dapp开发资料
  7. 2015.3.4 VS2005调用MFC dll时报错及解决
  8. 使用Windows服务发布WCF服务
  9. Sublim text3汉化
  10. ASCII码对照表 包含二进制、十进制、十六进制
  11. 找不到服务器或应用项目,word中文档时提示“找不到服务器应用程序、源文件或项目”有...-office软件找不到word文档,officewo...
  12. Android仿QQ列表滑动
  13. 机器学习相关学习视频
  14. Vue+SpringBoot的篮球社区平台
  15. android 开发帮助书籍pdf
  16. 格雷通路 算法 java,Java算法与数据结构教程
  17. MATLAB plot3绘制的不是三维图
  18. Mean-Shift算法
  19. verilog中always和initial的区别
  20. CorelDRAW怎么调整字间距

热门文章

  1. 2021-2027全球与中国SD WAN托管服务市场现状及未来发展趋势
  2. BZOJ 4399 魔法少女LJJ(线段树合并)
  3. Mac自带截图高级技巧
  4. 游戏挂机运行脚本方法
  5. 写代码时切换insert键,用来解决光标小黑块问题
  6. e4a浏览框本地HTML,E4A浏览器
  7. org.apache.felix.http.jetty %bundles.pluginTitle: Cannot start (org.osgi.framework.BundleException:
  8. 涨分神器-基于PPYOLOE的切图和拼图解决方案
  9. css实现半圆(上下左右半圆)
  10. git切换远程分支为develop