zoukankan      html  css  js  c++  java
  • .net mvc 使用 aspose.cells导出数据

    public class AsposeCellsHelper
        {
            public Workbook workBook;
            public Worksheet worksheet;
            Style style;
    
            /// <summary>
            /// 构造函数,不设置工作表名称
            /// </summary>
            public AsposeCellsHelper()
            {
                workBook = new Workbook();
                worksheet = workBook.Worksheets[0];
            }
    
            /// <summary>
            /// 构造函数,设置工作表名称
            /// </summary>
            public AsposeCellsHelper(string name)
            {
                workBook = new Workbook();
    
                if (string.IsNullOrEmpty(name))
                {
                    name = DateTime.Now.ToString("yyyyMMddHHmmssffff");
                }
    
                if (workBook.Worksheets.Count > 0)
                {
                    worksheet = workBook.Worksheets[0];
                    worksheet.Name = name;
                }
                else
                {
                    worksheet = workBook.Worksheets.Add(name);
                }
            }
    
            /// <summary>
            /// 创建工作表,并将对象切换为当前创建的工作表
            /// </summary>
            /// <param name="name"></param>
            public void CreateSheet(string name)
            {
                if (string.IsNullOrEmpty(name))
                {
                    name = DateTime.Now.ToString("yyyyMMddHHmmssffff");
                }
    
                worksheet = workBook.Worksheets.Add(name);
            }
    
            //设置单元格样式
            public void SetCellStyle(int fontSize, bool IsBold)
            {
                if (style == null)
                {
                    style = workBook.DefaultStyle;
                }
    
                //style.BackgroundColor = backgroundColor;
                style.Font.Name = "宋体";//文字字体
                style.Font.Size = fontSize;//文字大小
                //前景色
                style.ForegroundColor = Color.White;
                style.Font.IsBold = IsBold;//粗体
                style.HorizontalAlignment = TextAlignmentType.Center;//文字居中
                //线条样式
                style.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin;
                //线条颜色
                style.Borders[BorderType.TopBorder].Color = Color.Black;
                style.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin;
                style.Borders[BorderType.BottomBorder].Color = Color.Black;
                style.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin;
                style.Borders[BorderType.LeftBorder].Color = Color.Black;
                style.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin;
                style.Borders[BorderType.RightBorder].Color = Color.Black;
            }
    
            //设置值
            public void SetValue(int x, int y, string value,int rowHeight = 20)
            {
                //设置值
                worksheet.Cells[x, y].PutValue(value, false);
                //设置样式
                worksheet.Cells[x,y].SetStyle(style);
                //设置行高
                worksheet.Cells.SetRowHeight(x, rowHeight);
            }
    
            /// <summary>
            /// 填充数据到excel,数据填充可自行添加或继承后扩展方法
            /// </summary>
            /// <param name="dt"></param>
            public void SetDataByTable(DataTable dt,string title)
            {
                DataColumnCollection columns = dt.Columns;
    
                int addIndex = 0;
    
                //表格标题
                if (!string.IsNullOrEmpty(title))
                {
                    addIndex = 1;
                    SetCellStyle(16, true);
                    worksheet.Cells.Merge(0, 0, 1, columns.Count);
                    SetValue(0, 0, title, 30);
                }
    
                //表头
                if (columns.Count > 0)
                {
                    int columnIndex = 0;
    
                    foreach (DataColumn dc in columns)
                    {
                        SetCellStyle(14, true);
                        SetValue(0 + addIndex, columnIndex, dc.ColumnName, 25);
                        columnIndex += 1;
                    }
                }
    
                //数据
                if (dt.Rows.Count > 0)
                {
                    int rowIndex = 1 + addIndex;
    
                    foreach (DataRow dr in dt.Rows)
                    {
                        for (int i = 0; i < columns.Count; i++)
                        {
                            SetCellStyle(12, false);
                            SetValue(rowIndex, i, dr[i].ToString());
                        }
    
                        rowIndex += 1;
                    }
                }
    
                worksheet.AutoFitColumns();
            }
    
            /// <summary>
            /// 导出excel
            /// </summary>
            /// <param name="name"></param>
            public void ExportExcel(string name)
            {
                try
                {
                    HttpResponse Response = System.Web.HttpContext.Current.Response;
    
                    if (Response != null)
                    {
                        if (string.IsNullOrEmpty(name))
                        {
                            name = DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xlsx";
                        }
    
                        // Save in Xlsx format
                        workBook.Save(Response, name, ContentDisposition.Attachment, new OoxmlSaveOptions());
                        Response.End();
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    //可以不写dispose
                    worksheet.Dispose();
                    workBook.Dispose();
                }
            }
        }
    

      

    调用代码

    public void Export()
            {
                AsposeCellsHelper aspose = new AsposeCellsHelper("测试导出");
    
                DataTable dt = new DataTable("cart");
                DataColumn dc3 = new DataColumn("number", Type.GetType("System.Int16"));
                DataColumn dc1 = new DataColumn("prizename", Type.GetType("System.String"));
                DataColumn dc2 = new DataColumn("point", Type.GetType("System.Int16"));
                DataColumn dc4 = new DataColumn("totalpoint", Type.GetType("System.Int64"));
                DataColumn dc5 = new DataColumn("prizeid", Type.GetType("System.String"));
                dt.Columns.Add(dc3);
                dt.Columns.Add(dc1);
                dt.Columns.Add(dc2);
                dt.Columns.Add(dc4);
                dt.Columns.Add(dc5);
                //以上代码完成了DataTable的构架,但是里面是没有任何数据的
                for (int i = 0; i < 10; i++)
                {
                    DataRow dr = dt.NewRow();
                    dr["prizename"] = "娃娃";
                    dr["point"] = 10;
                    dr["number"] = i;
                    dr["totalpoint"] = 10;
                    dr["prizeid"] = "001";
                    dt.Rows.Add(dr);
                }
    
                //aspose.SetDataByTable(dt,string.Empty);
                aspose.SetDataByTable(dt, "测试标题");//标题可以传空,可以修改为重载,或者修改SetDataByTable方法的最后一个参数,将其加上默认值,重载的一个变种
                aspose.ExportExcel("测试.xlsx");//名称可以传空
            }
    

      

  • 相关阅读:
    JPA报错 javax.persistence.EntityNotFoundException: Unable to find XX类 with id xx问题
    Spring-Data-JPA api文档
    一道小数数学题
    pycharm 关联py之后sqlmap的使用
    base64和base32替换编码解密
    Mysql 启动失败
    Xshell连接linux时常见问题
    使用metasploit 框架保持持久性
    获得shell 、启用远程服务
    Java Class Loader
  • 原文地址:https://www.cnblogs.com/zhoushangwu/p/10375552.html
Copyright © 2011-2022 走看看