如何从读取 asp.net 中的数据库创建 .CSV 文件?谁能建议我如何在 asp.net 中创建 .CSV 文件?
提前致谢。
检查这个:将数据表导出为 CSV 文件格式
public void CreateCSVFile(DataTable dt, string strFilePath)
{
#region Export Grid to CSV
// Create the CSV file to which grid data will be exported.
StreamWriter sw = new StreamWriter(strFilePath, false);
// First we will write the headers.
//DataTable dt = m_dsProducts.Tables[0];
int iColCount = dt.Columns.Count;
for (int i = 0; i < iColCount; i++)
{
sw.Write(dt.Columns[i]);
if (i < iColCount - 1)
{
sw.Write(",");
}
}
sw.Write(sw.NewLine);
// Now write all the rows.
foreach (DataRow dr in dt.Rows)
{
for (int i = 0; i < iColCount; i++)
{
if (!Convert.IsDBNull(dr[i]))
{
sw.Write(dr[i].ToString());
}
if (i < iColCount - 1)
{
sw.Write(",");
}
}
sw.Write(sw.NewLine);
}
sw.Close();
#endregion
}
如果您试图强制下载始终提供另存为,则应将内容类型设置为 application/octet-stream。
string attachment = "attachment; filename=MyCsvLol.csv";
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ClearHeaders();
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.AddHeader("content-disposition", attachment);
HttpContext.Current.Response.ContentType = "text/csv";
HttpContext.Current.Response.AddHeader("Pragma", "public");
var sb = new StringBuilder();
foreach(var line in DataToExportToCSV)
sb.AppendLine(TransformDataLineIntoCsv(line));
HttpContext.Current.Response.Write(sb.ToString());
HttpContext.Current.Response.End();
最简单的方法之一是使用FileHelpers Library
FileHelpers.CsvEngine.DataTableToCsv(dataTable, filename);
WriteFile(继承自 FileHelperEngine) 重载。将记录数组写入指定文件。
WriteStream(继承自 FileHelperEngine) 重载。将记录数组写入指定的 Stream。
WriteString(继承自 FileHelperEngine) 重载。将记录数组写入字符串并返回。
参考:
写入 CSV 文件并导出?
将数据导出到逗号分隔 (CSV) 文件,用于 Excel 等应用程序
,使用“保存文件”对话框将数据表导出到 CSV - C#
认为您正在寻找CSV 文件的格式。它确实是一个结构非常简单的普通文本文件。您可以在此处参考 Wiki。
您可以通过从数据库中获取数据并根据需要将数据写入文本文件来自己制作。
以下是 CSV 文件内容的示例:
Year,Make,Model
1997,Ford,E350
2000,Mercury,Cougar
文件中有 3 列:Year
, Make
, Model
2 行数据是:1997,Ford,E350
, 2000,Mercury,Cougar
.
您可以在文章Read and Writing CSV Files in C#中查看如何创建 CSV 文件。
您可以在动态创建可下载内容一文中了解如何动态生成文件内容,但使其表现得像可下载文件一样。
为什么你不能:
1) 查询数据库(例如使用 SQL 阅读器),
2) 将您的 HTTP 响应标头 (response.ContentType) 设置为 MIME 类型“application/csv”
3) 以逗号分隔 (CSV) 格式写出 (response.Write) 结果集的每一行?
这是该方法的一个示例:
Try this:
string filePath = @"C:\test.csv";
string delimiter = ",";
string[][] output = new string[][]{
new string[]{"Col 1 Row 1", "Col 2 Row 1", "Col 3 Row 1"},
new string[]{"Col1 Row 2", "Col2 Row 2", "Col3 Row 2"}
};
int length = output.GetLength(0);
StringBuilder sb = new StringBuilder();
for (int index = 0; index < length; index++)
sb.AppendLine(string.Join(delimiter, output[index]));
File.WriteAllText(filePath, sb.ToString());
for more Help.
Anyway, you should find any robust CSV library for this, if you allow special characters like double quote, comma, space, etc... to appear in your file.