zoukankan      html  css  js  c++  java
  • asp.net导出word(word2007)

    1、只能导出成word2007格式(.docx),可直接导出到客户端

    2、服务器上不需要装任何东西,也没有权限限制,比较适合导出表格(支持图片)
    3、需要一个国外的DocX.dll插件
    4、需要添加引用:System.Drawing
    5、需要引用:
    using Novacode;
    using System.Drawing;
    using System.IO;
    using System.Drawing.Imaging;
    using System.Threading.Tasks;
    using System.Data;
    6、方法样例如下:
            public static void aa()
            {
                // Create a document.
                using (DocX document = DocX.Create("F:/测试/test2/生成的word/111table.docx"))
                {
                    // Add a hyperlink into the document.
                    //Hyperlink link = document.AddHyperlink("link", new Uri("http://www.google.com"));
                    Paragraph title = document.InsertParagraph().Append("Test").FontSize(20);//.Font(new FontFamily("Comic Sans MS"));
                    title.Alignment = Alignment.center;
                    Table table = document.InsertTable(4, 4);
                    table.Design = TableDesign.TableGrid;
                    //table.AutoFit = AutoFit.ColumnWidth;
                    //宽度设置(每个单元格都得设置),默认每个单元格宽度:154,表格总宽度大约:687
                    table.Rows[0].Cells[0].Width = 100;
                    table.Rows[0].Cells[1].Width = 200;
                    table.Rows[0].Cells[2].Width = 300;
                    table.Rows[0].Cells[3].Width = 87;
                    //table.Design = TableDesign.ColorfulGridAccent2;
                    table.Alignment = Alignment.center;
                    table.SetBorder(TableBorderType.InsideH, new Border());
                    table.SetBorder(TableBorderType.InsideV, new Border());
                    table.SetBorder(TableBorderType.Top, new Border());
                    table.SetBorder(TableBorderType.Right, new Border());
                    table.SetBorder(TableBorderType.Left, new Border());
                    table.SetBorder(TableBorderType.Bottom, new Border());
                   
                    //table.AutoFit = AutoFit.ColumnWidth;//.Window;
                    table.Rows[0].Cells[0].Paragraphs[0].Append(table.Rows[1].Cells[0].Paragraphs.Count.ToString());
                    table.Rows[0].Cells[1].Paragraphs[0].Alignment = Alignment.right;
                    table.Rows[0].Cells[1].Paragraphs[0].Append("555").FontSize(15);//字体大小设置
                    table.Rows[1].Cells[0].Paragraphs[0].InsertText("测试1");
                    //颜色设置
                    table.Rows[1].Cells[0].Paragraphs[0].Color(Color.DarkBlue);
                    //加粗
                    table.Rows[1].Cells[0].Paragraphs[0].Bold();
                    table.Rows[1].MergeCells(0, 3);
                    for (; table.Rows[1].Cells[0].Paragraphs.Count != 1; )
                        table.Rows[1].Cells[0].Paragraphs.Last().Remove(false);
                    table.Rows[2].Cells[0].Paragraphs[0].InsertText("测试2");
                    table.Rows[3].Cells[0].Paragraphs[0].Append("31");
                    table.Rows[3].Cells[1].Paragraphs[0].Append(table.Rows[1].Cells[0].Paragraphs[0].Text.Length.ToString());
                    Paragraph p2 = document.InsertParagraph();
    
                    Table table1 = document.InsertTable(4, 8);
                    table1.AutoFit = AutoFit.Window;
                    table1.Alignment = Alignment.center;
                    table1.SetBorder(TableBorderType.InsideH, new Border());
                    table1.SetBorder(TableBorderType.InsideV, new Border());
                    table1.SetBorder(TableBorderType.Top, new Border());
                    table1.SetBorder(TableBorderType.Right, new Border());
                    table1.SetBorder(TableBorderType.Left, new Border());
                    table1.SetBorder(TableBorderType.Bottom, new Border());
                    table1.Rows[1].MergeCells(0, 3);
    
                    table1.Rows[0].Cells[0].Paragraphs[0].Append(table1.Rows[1].Cells[0].Paragraphs.Count.ToString());
                    table1.Rows[0].Cells[1].Paragraphs[0].Alignment = Alignment.right;
                    table1.Rows[0].Cells[1].Paragraphs[0].Append("222222");
                    table1.Rows[1].Cells[0].Paragraphs[0].InsertText("测试1");
                    table1.Rows[1].Cells[0].Paragraphs[0].Bold();
                    for (; table1.Rows[1].Cells[0].Paragraphs.Count > 2; )
                        table1.Rows[1].Cells[0].Paragraphs.Last().Remove(false);
                    table1.Rows[2].Cells[0].Paragraphs[0].InsertText("测试2");
                    table1.Rows[3].Cells[0].Paragraphs[0].Append("31
    ");
                    table1.Rows[3].Cells[1].Paragraphs[0].Append(table1.Rows[1].Cells[0].Paragraphs[0].Text.Length.ToString());
    
                    System.IO.MemoryStream stream = new MemoryStream();
                    //document.Save();
                    document.SaveAs(stream);
                    byte[] bytes = stream.ToArray();
                    stream.Close();
                    stream.Dispose();
                    context.Response.ContentType = "application/octet-stream";
                    //通知浏览器下载文件而不是打开
                    context.Response.AddHeader("Content-Disposition", "attachment;   filename=" + 
                        HttpUtility.UrlEncode("test.docx", System.Text.Encoding.UTF8));
                    context.Response.BinaryWrite(bytes);
                    context.Response.Flush();
                    HttpContext.Current.ApplicationInstance.CompleteRequest();
                    context.Response.End();
                }
            }
  • 相关阅读:
    Ajax基础知识详解
    php 基础语法整理
    06 js-递归
    原生js 实现瀑布流布局
    解决高度坍塌问题
    jQuery动画效果
    jQuery增删元素类名
    JQueryTab栏切换(important!)
    jQuery排他思想(important!)
    jQuery设置元素样式
  • 原文地址:https://www.cnblogs.com/deep-blue/p/5110021.html
Copyright © 2011-2022 走看看