C# 通过Web服务将数据从Sql Server移动到Excel

C# 通过Web服务将数据从Sql Server移动到Excel,c#,sql-server,web-services,excel,C#,Sql Server,Web Services,Excel,我的用户需要Excel中我的应用程序中的数据。数据驻留在SQL Server数据库中,但我不希望用户直接访问数据库,我宁愿为他们提供一个web服务来获取数据。通过web服务将数据从SQL Server移动到Excel的最佳方式是什么?您可以直接将其作为asp.net页面并返回.csv文件。如果将mimetype更改为text/csv,则默认情况下它将在excel中打开。这将是最简单的方法,也是我在过去使用过的一种非常成功的方法。您也可以回击一个html页面,页面上有一个.xls文件名的表格,ex

我的用户需要Excel中我的应用程序中的数据。数据驻留在SQL Server数据库中,但我不希望用户直接访问数据库,我宁愿为他们提供一个web服务来获取数据。通过web服务将数据从SQL Server移动到Excel的最佳方式是什么?

您可以直接将其作为asp.net页面并返回.csv文件。如果将mimetype更改为text/csv,则默认情况下它将在excel中打开。这将是最简单的方法,也是我在过去使用过的一种非常成功的方法。

您也可以回击一个html页面,页面上有一个.xls文件名的表格,excel也知道如何打开它。

下面的代码将从一个数据表生成一个excel文件,您可以将其流式传输给用户

    public static void CreateExcelFromDataTable(string filename, DataTable dt) {

        DataGrid grid = new DataGrid();
        grid.HeaderStyle.Font.Bold = true;
        grid.DataSource = dt;
        grid.DataMember = dt.TableName;

        grid.DataBind();

        // render the DataGrid control to a file

        using (StreamWriter sw = new StreamWriter(filename)) {
            using (HtmlTextWriter hw = new HtmlTextWriter(sw)) {
                grid.RenderControl(hw);
            }
        }
    }

让Web服务发出一个字符串缓冲区,其中单元格由制表符分隔,行由回车符/换行符分隔。然后通过Excel Web查询将结果导入Excel。它便宜,快速,有点脏,但适合简单的过程

我赞成Excel Web查询(数据/导入外部)
此外,还有一种将数据从Excel发布回网站的方法。至少它在MS Sharepoint中工作

我刚刚测试了您的解决方案,它工作得很好,只是excel在打开它之前会给出警告。总的来说,这是个好主意。我学到了一些新东西:)。谢谢。+1我喜欢这个主意,如果需要预览的话可能会很有用。实际上这是个不错的主意。将其保存在手边,以便简单输出未格式化的数据。+1个好问题,各种回答。