将数据集导出到Excel

时间:2009-04-03 09:22:48

标签: c#

如何将数据集导出到可以由Excel 2003打开的文件?

你会详细说明吗?因为理解CSV / TSV是困难的

marc你会给我们一个样本.v现在听到csv / tsv这个词了

5 个答案:

答案 0 :(得分:3)

我认为这会对你有所帮助。使用http处理程序

<%@ WebHandler Language="C#" Class="DownloadAllEvent" %>

using System;
using System.Web; 
using System.Data.SqlClient;
using System.Data;
using System.Text;
using System.IO;

public class DownloadAllEvent : IHttpHandler
{ 
    const int BUFFERSIZE = 1024;

    public bool IsReusable
    {
         get
    {
          return true;
    }
 } 

 public void ProcessRequest(HttpContext context) 
{ 
   HttpResponse response = context.Response; 
   HttpRequest request = context.Request; 
   response.BufferOutput = true;
   response.ContentType = "application/octet-stream";
   response.AddHeader("Content-Disposition", "attachment; filename=Events.csv");
   response.Cache.SetCacheability(HttpCacheability.NoCache);
   //string  csvfile = request.QueryString["csvfile"];
   string strNoofIds = request.QueryString["NoofIds"];
   // declare variables or do something to pass parameter to writecalEntry function

   writeCalEntry(response.Output, strguid, sectionid); 
  response.End(); 
 }

   public void writeCalEntry(TextWriter output, string[] strguid,string sectionid)
   {
        DataTable dt = createDataTable();
        DataRow dr;

        StringBuilder sbids = new StringBuilder();



        // process table if neeed.. use following code to create CSV format string from table

        string separator;      

        separator = ","; //default

        string quote = "\"";

        //create CSV file
        //StreamWriter sw = new StreamWriter(AbsolutePathAndFileName);

        //write header line

        StringBuilder sb = new StringBuilder();


        int iColCount = dt.Columns.Count;
        for (int i = 0; i < iColCount; i++)
        {
            //sw.Write(TheDataTable.Columns[i]);
            sb.Append(dt.Columns[i]);
            if (i < iColCount - 1)
            {
                //sw.Write(separator);
                sb.Append(separator);
            }
        }
        //sw.Write(sw.NewLine);
        sb.AppendLine();

        //write rows
        foreach (DataRow  tempdr in dt.Rows)
        {
            for (int i = 0; i < iColCount; i++)
            {
                if (!Convert.IsDBNull(tempdr[i]))
                {
                    string data = tempdr[i].ToString();
                    data = data.Replace("\"", "\\\"");
                    //sw.Write(quote + data + quote);
                    sb.Append(quote + data + quote);
                }
                if (i < iColCount - 1)
                {
                    //sw.Write(separator);
                    sb.Append(separator);
                }
            }
            //sw.Write(sw.NewLine);
            sb.AppendLine();
        }
        //sw.Close();
        UnicodeEncoding uc = new UnicodeEncoding();
        output.WriteLine(sb);

}

public static DataTable createDataTable()
{
    DataTable dt = new DataTable("EventsData");
    // create tables as needed which will be converted to csv format.
    return dt;
}

将此httphandler文件称为要将数据导出为格式为

的文件
Response.Redirect("downloadFile.ashx");

您也可以在Response.Redirect中发送参数,该参数可以在.ashx文件中获取。 我想这会帮助你。

答案 1 :(得分:0)

最简单的方法可能是将单个表导出为csv / tsv。 '网上充满了这样的样本。

答案 2 :(得分:0)

如果你想在2003年这样做,你已经六年了。 ;)

如果你的意思是“2003”,也许你可以澄清,人们可以给出更好的答案(虽然之前的答案,导出为CSV,是一个非常好的答案)。

答案 3 :(得分:0)

XML电子表格可能就是您所需要的。

请看this回答。

答案 4 :(得分:0)

我个人发现的最好方法是使用XML和电子表格组件。

示例代码在此处发布会非常混乱,但从这里开始,看看它的引导位置: http://msdn.microsoft.com/en-us/library/aa140062.aspx