• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

csharp:asp.netImportingorExportingDatafromWorksheetsusingasposecell

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using Aspose.Cells;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Runtime;
using System.Text;


namespace asposecelldemo
{

    /// <summary>
    /// 
    /// </summary>
    public partial class _Default : System.Web.UI.Page
    {


        DataTable getData()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("id", typeof(int));
            dt.Columns.Add("name", typeof(string));
            dt.Rows.Add(1, "geovindu");
            dt.Rows.Add(2, "geov");
            dt.Rows.Add(3, "塗斯博");
            dt.Rows.Add(4, "趙雅芝");
            dt.Rows.Add(5, " なわち日本語");
            dt.Rows.Add(6, "처리한다");
            dt.Rows.Add(7, "涂聚文");
            dt.Rows.Add(8, "塗聚文");
            return dt;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.GridView1.DataSource = getData();
                this.GridView1.DataBind();

            }
        }
        /// <summary>
        /// http://www.aspose.com/docs/display/cellsnet/Importing+Data+to+Worksheets
        /// </summary>
        /// <param name="table"></param>
        private void ExporttoExcelExcel(DataTable table, string fileName)
        {
            //Instantiate a new Workbook
            Workbook book = new Workbook();
            //Clear all the worksheets
            book.Worksheets.Clear();
            //Add a new Sheet "Data";
            Worksheet worksheet = book.Worksheets.Add("Data");
            HttpContext context = HttpContext.Current;
            context.Response.Clear();
            worksheet.Cells.ImportDataTable(table, true, "A1");
            context.Response.Buffer = true;  
            context.Response.ContentType = "application/ms-excel";
            context.Response.Charset = "utf-8";
            context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
            context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName + ".xls");
            context.Response.BinaryWrite(book.SaveToStream().ToArray());
            context.Response.Flush();
            context.Response.End();
                     
        }      

        /// <summary>
        /// 
        /// </summary>
        /// <param name="dataTable"></param>
        /// <param name="fileName"></param>
        protected void ExportToExcel(DataTable dataTable, string fileName)
        {
            
            HttpContext context = HttpContext.Current;
            StringBuilder sb = new StringBuilder();

            //foreach (DataColumn column in dataTable.Columns)
            //{
            //    context.Response.Write(column.ColumnName + ",");
            //}
            //context.Response.Write(Environment.NewLine);
 
            //foreach (DataRow row in dataTable.Rows)
            //{
            //    for (int i = 0; i < dataTable.Columns.Count; i++)
            //    {
            //        context.Response.Write(row[i].ToString() + ",");
            //    }
            //    context.Response.Write(Environment.NewLine);
            //} 此法亚洲语言用会出现乱码
            foreach (DataColumn column in dataTable.Columns)
            {
                sb.Append(column.ColumnName + ",");
            }
            sb.Append(Environment.NewLine);

            foreach (DataRow row in dataTable.Rows)
            {
                for (int i = 0; i < dataTable.Columns.Count; i++)
                {
                    sb.Append(row[i].ToString() + ",");
                }
                sb.Append(Environment.NewLine);
            }


            StringWriter sw = new StringWriter(sb);
            sw.Close();
            context.Response.Clear();
            context.Response.Buffer = true;
            context.Response.Charset = "utf-8";
            context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
            context.Response.HeaderEncoding = System.Text.Encoding.UTF8;
            context.Response.ContentType = "text/csv";  
            //context.Response.ContentType = "application/ms-excel";
            context.Response.BinaryWrite(new byte[] { 0xEF, 0xBB, 0xBF });
            context.Response.Write(sw);
            context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8).Replace("+", "%20")+ ".csv");//亂碼
            context.Response.Flush();  
            context.Response.End();
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            ExportToExcel(getData(), "塗聚文" + DateTime.Now.ToString("yyyyMMddHHmmssfff"));
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button2_Click(object sender, EventArgs e)
        {
            ExporttoExcelExcel(getData(),"geovindu"+DateTime.Now.ToString("yyyyMMddHHmmssfff"));
        }

      
    }

}

  

        /// <summary>
        /// http://www.aspose.com/docs/display/cellsnet/Importing+Data+to+Worksheets
        /// </summary>
        /// <param name="table"></param>
        private void ExporttoExcelExcel(DataTable table, string fileName,int type)
        {
            //Instantiate a new Workbook
            Workbook book = new Workbook();
           // book.Save("",SaveFormat.Xlsx);
            //Clear all the worksheets
            book.Worksheets.Clear();
            //Add a new Sheet "geovindu";
            Worksheet worksheet = book.Worksheets.Add("geovindu");
            HttpContext context = HttpContext.Current;
            context.Response.Clear();
            worksheet.Cells.ImportDataTable(table, true, "A1");
           
            context.Response.Buffer = true;
            if (type == 1)
            {
                context.Response.ContentType = "application/ms-excel";  //2003
                context.Response.Charset = "utf-8";
                context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
                context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName + ".xls");
                context.Response.BinaryWrite(book.SaveToStream().ToArray());
                context.Response.Flush();
                context.Response.End();
            }
            
            if (type == 2)
            {
                //1.//不可以 ,擴展名出現問題
                //context.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";  // 2007
                //context.Response.Charset = "utf-8";
                //context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
                //context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName + ".xlsx");
                ////book.Save("", SaveFormat.Xlsx);
                //context.Response.BinaryWrite(book.SaveToStream().ToArray());             

                ////Save with default format, send the file to user so that he may open the file in
                ////some application or save it to some location
                //// book.Save(this.Response, "importeddata.xlsx", ContentDisposition.Attachment, new XlsSaveOptions(SaveFormat.Xlsx));      
                //context.Response.Flush();
                //context.Response.End();

                //2.
                string sb = DataTabletoHmtl(table);
               // string sb = toHTML_Table(table);
                byte[] array = Encoding.UTF8.GetBytes(sb.ToString());
                MemoryStream ms = new MemoryStream(array);
                LoadOptions lo = new LoadOptions(LoadFormat.Html);
                book = new Workbook(ms, lo);
                worksheet = book.Worksheets.Add("geovindu");
                book.Save(Response, fileName + ".xlsx", ContentDisposition.Attachment, new XlsSaveOptions(SaveFormat.Xlsx));
            }
               

            
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="dt"></param>
        /// <returns></returns>
        public string DataTabletoHmtl(DataTable dt)
        {
            if (dt.Rows.Count == 0)
                return "";

            string tab = "\t";

            StringBuilder sb = new StringBuilder();

            sb.AppendLine("<html>");
            sb.AppendLine(tab + "<body>");//不帶HTML頭,會顯示格式問題.塗聚文註
            sb.AppendLine(tab + tab + "<table>");

            // headers.
            sb.Append(tab + tab + tab + "<tr>");

            foreach (DataColumn dc in dt.Columns)
            {
                sb.AppendFormat("<td>{0}</td>", dc.ColumnName);
            }

            sb.AppendLine("</tr>");

            // data rows
            foreach (DataRow dr in dt.Rows)
            {
                sb.Append(tab + tab + tab + "<tr>");

                foreach (DataColumn dc in dt.Columns)
                {
                    string cellValue = dr[dc] != null ? dr[dc].ToString() : "";
                    sb.AppendFormat("<td>{0}</td>", cellValue);
                }

                sb.AppendLine("</tr>");
            }

            sb.AppendLine(tab + tab + "</table>");
            sb.AppendLine(tab + "</body>");
            sb.AppendLine("</html>");
            return sb.ToString();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="dt"></param>
        /// <returns></returns>
        public string toHTML_Table(DataTable dt)
        {
            if (dt.Rows.Count == 0)
                return "";

            StringBuilder builder = new StringBuilder();
            builder.Append("<html>");
            builder.Append("<head>");
            builder.Append("<title>");
            builder.Append("Page-");
            builder.Append(Guid.NewGuid().ToString());
            builder.Append("</title>");
            builder.Append("</head>");
            builder.Append("<body>");
            builder.Append("<table border='1px' cellpadding='5' cellspacing='0' ");//有樣式,會提示有格式問題. 塗聚文註
            builder.Append("style='border: solid 1px Silver; font-size: x-small;'>");
            builder.Append("<tr align='left' valign='top'>");
            foreach (DataColumn c in dt.Columns)
            {
                builder.Append("<td align='left' valign='top'><b>");
                builder.Append(c.ColumnName);
                builder.Append("</b></td>");
            }
            builder.Append("</tr>");
            foreach (DataRow r in dt.Rows)
            {
                builder.Append("<tr align='left' valign='top'>");
                foreach (DataColumn c in dt.Columns)
                {
                    builder.Append("<td align='left' valign='top'>");
                    builder.Append(r[c.ColumnName]);
                    builder.Append("</td>");
                }
                builder.Append("</tr>");
            }
            builder.Append("</table>");
            builder.Append("</body>");
            builder.Append("</html>");

            return builder.ToString();
        }

 net4.0

        public string ConvertDataTableToHTMLTableInOneLine(DataTable dt)
        {
            //Convert DataTable To HTML Table in one line
            return "<table>\n<tr>" + string.Join("", dt.Columns.Cast<DataColumn>().Select(dc => "<td>" + dc.ColumnName + "</td>")) + "</tr>\n" +
            "<tr>" + string.Join("</tr>\n<tr>", dt.AsEnumerable().Select(row => "<td>" + string.Join("</td><td>", row.ItemArray) + "</td>").ToArray()) + "</tr>\n<\table>";

        }

  

 

  /// <summary>
        /// 
        /// </summary>
        /// <param name="dt"></param>
        /// <param name="filename"></param>
        /// <param name="listHeader"></param>
        /// <returns></returns>
        public static string ExportExcel(DataTable dt, string filename, List<string> listHeader)
        {
            try
            {
                Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook(); //工作簿
                Aspose.Cells.Worksheet sheet = workbook.Worksheets[0]; //工作表
                Aspose.Cells.Cells cells = sheet.Cells;//单元格
                Aspose.Cells.Style style;
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    cells[0, j].PutValue(listHeader[j]);

                    style = cells[0, j].GetStyle();
                    style.BackgroundColor = System.Drawing.Color.Blue;
                    style.ForegroundColor = System.Drawing.Color.FromArgb(153, 204, 0);
                    style.Pattern = BackgroundType.Solid;
                    cells[0, j].SetStyle(style);
                }
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        cells[i + 1, j].PutValue(dt.Rows[i][j].ToString());
                    }
                }

                sheet.AutoFitColumns();
                cells.SetRowHeight(0, 30);
                workbook.Save(filename);

                return "";
            }
            catch (Exception ex)
            {
                return ex.ToString();
            }

        }
        /// <summary>
        /// geovindu 涂聚文
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="data"></param>
        /// <param name="response"></param>
        //private static void Export<T>(IEnumerable<T> data, HttpResponse response, string filename)
        //{
        //    Workbook workbook = new Workbook();
        //    Worksheet sheet = (Worksheet)workbook.Worksheets[0];

        //    PropertyInfo[] ps = typeof(T).GetProperties();
        //    var colIndex = "A";

        //    foreach (var p in ps)
        //    {

        //        sheet.Cells[colIndex + 1].PutValue(p.Name);
        //        int i = 2;
        //        foreach (var d in data)
        //        {
        //            sheet.Cells[colIndex + i].PutValue(p.GetValue(d, null));
        //            i++;
        //        }

        //        colIndex = ((char)(colIndex[0] + 1)).ToString();
        //    }

        //    response.Clear();
        //    response.Buffer = true;
        //    response.Charset = "utf-8";
        //    response.AppendHeader("Content-Disposition", "attachment;filename=" + filename + ".xls");
        //    response.ContentEncoding = System.Text.Encoding.UTF8;
        //    response.ContentType = "application/ms-excel";
        //    response.BinaryWrite(workbook.SaveToStream().ToArray());
        //    response.End();
        //}
        /// <summary>
        /// 
        /// </summary>
        /// <param name="dt"></param>
        /// <param name="context"></param>
        /// <param name="file"></param>
        public void ProcessRequest(DataTable dt, HttpContext context,string file)
        {


            Workbook workbook = new Workbook();
            Worksheet sheet = workbook.Worksheets[0];

                // Header
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    sheet.Cells[0, i].PutValue(dt.Columns[i].ColumnName);
                }
                // Content
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        sheet.Cells[i + 1, j].PutValue(dt.Rows[i][j].ToString());
                    }
                }

                context.Response.Clear();
                context.Response.Buffer = true;
                context.Response.Charset = "utf-8";
                //context.Response.ContentType = "text/plain";
                context.Response.AddHeader("Content-Disposition",
                                           "attachment;filename=" + context.Server.UrlEncode(file)); //"数据.xlsx"
                context.Response.ContentEncoding = System.Text.Encoding.UTF8;
                context.Response.ContentType = "application/ms-excel";
                //    context.Response.BinaryWrite(workbook.SaveToStream().ToArray());
                //    context.Response.End();

                workbook.Save(context.Response.OutputStream, SaveFormat.Xlsx);
            
        }

  

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ASP.NET保持用户状态的9种方法发布时间:2022-07-10
下一篇:
ASP.NET Core开发之HttpContext发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap