【问题标题】:Export DataTable to Excel and save to local directory将数据表导出到 Excel 并保存到本地目录
【发布时间】:2015-03-08 11:05:10
【问题描述】:

我有以下功能,可以将数据表转换为 excel 并提示用户下载 excel。

我可以知道如何更改该功能以将其保存到我的本地目录而不是下载吗?

public static void ExportDataTableToExcel(DataTable table, string name)
    {
        HttpContext context = HttpContext.Current;
        context.Response.Clear();

        string attachment = "attachment; filename=" + name + ".xls";

        context.Response.ClearContent();
        context.Response.AddHeader("content-disposition", attachment);
        context.Response.ContentType = "application/vnd.ms-excel";
        context.Response.ContentEncoding = System.Text.Encoding.Unicode;
        context.Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());

        string tab = "";

        foreach (DataColumn dc in table.Columns)
        {
            context.Response.Write(tab + dc.ColumnName);
            tab = "\t";
        }

        context.Response.Write("\n");

        int i;
        foreach (DataRow dr in table.Rows)
        {
            tab = "";
            for (i = 0; i < table.Columns.Count; i++)
            {
                context.Response.Write(tab + "=\"" + dr[i].ToString() + "\"");
                tab = "\t";
            }

            context.Response.Write("\n");
        }         

        context.Response.End();
    }

【问题讨论】:

    标签: c# asp.net excel datatable


    【解决方案1】:

    发现并实现功能

    public static bool SaveDataTableToExcel(DataTable table, string savePath)
        {
            //open file
            StreamWriter wr = new StreamWriter(savePath, false, Encoding.Unicode);
    
            try
            {
                for (int i = 0; i < table.Columns.Count; i++)
                {
                    wr.Write(table.Columns[i].ToString().ToUpper() + "\t");
                }
    
                wr.WriteLine();
    
                //write rows to excel file
                for (int i = 0; i < (table.Rows.Count); i++)
                {
                    for (int j = 0; j < table.Columns.Count; j++)
                    {
                        if (table.Rows[i][j] != null)
                        {
                            wr.Write("=\"" + Convert.ToString(table.Rows[i][j]) + "\"" + "\t");
                        }
                        else
                        {
                            wr.Write("\t");
                        }
                    }
                    //go to next line
                    wr.WriteLine();
                }
                //close file
                wr.Close();
            }
            catch (Exception ex)
            {
                LogError(ex);
    
                return false;
            }
    
            return true;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-17
      • 1970-01-01
      • 1970-01-01
      • 2017-03-27
      • 1970-01-01
      • 2017-09-10
      相关资源
      最近更新 更多