如何将数据集导出到可以由Excel 2003打开的文件?
你会详细说明吗?因为理解CSV / TSV是困难的marc你会给我们一个样本.v现在听到csv / tsv这个词了
答案 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