简体   繁体   English

将DataTable导出到Excel并保存到本地目录

[英]Export DataTable to Excel and save to local directory

I have below functions that take Data Table and convert to excel and prompt user to download the excel. 我具有以下将数据表转换为excel并提示用户下载excel的函数。

May I know how can I change the function so that it is save to my local directory instead of download? 我可以知道如何更改功能,以便将其保存到本地目录而不是下载吗?

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();
    }

Found and implemented the function 建立并实施功能

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;
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM