gpt4 book ai didi

asp.net - 如何最好地生成 CSV(逗号分隔文本文件)以供使用 ASP.NET 下载?

转载 作者:行者123 更新时间:2023-12-02 11:17:17 24 4
gpt4 key购买 nike

这就是我所拥有的。有用。但是,有没有更简单或更好的方法呢?

在一个 ASPX 页面上,我有下载链接...

<asp:HyperLink ID="HyperLinkDownload" runat="server" NavigateUrl="~/Download.aspx">Download as CSV file</asp:HyperLink>

然后我就得到了 Download.aspx.vb 背后的代码...

Public Partial Class Download
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'set header
Response.Clear()
Response.ContentType = "text/csv"
Dim FileName As String = "books.csv"
Response.AppendHeader("Content-Disposition", "attachment;filename=" + FileName)

'generate file content
Dim db As New bookDevelopmentDataContext
Dim Allbooks = From b In db.books _
Order By b.Added _
Select b
Dim CsvFile As New StringBuilder
CsvFile.AppendLine(CsvHeader())
For Each b As Book In Allbooks
CsvFile.AppendLine(bookString(b))
Next

'write the file
Response.Write(CsvFile.ToString)
Response.End()
End Sub

Function CsvHeader() As String
Dim CsvLine As New StringBuilder
CsvLine.Append("Published,")
CsvLine.Append("Title,")
CsvLine.Append("Author,")
CsvLine.Append("Price")
Return CsvLine.ToString
End Function

Function bookString(ByVal b As Book) As String
Dim CsvLine As New StringBuilder
CsvLine.Append(b.Published.ToShortDateString + ",")
CsvLine.Append(b.Title.Replace(",", "") + ",")
CsvLine.Append(b.Author.Replace(",", "") + ",")
CsvLine.Append(Format(b.Price, "c").Replace(",", ""))
Return CsvLine.ToString
End Function

End Class

最佳答案

CSV 格式存在一些问题。您是否问过自己以下问题:

  • 我的数据中是否嵌入了逗号?
  • 我的数据中是否嵌入了双引号?
  • 我的数据中是否有换行符?
  • 我需要支持 Unicode 字符串吗?

我在上面的代码中发现了几个问题。首先是逗号的事情......你正在剥离逗号:

CsvLine.Append(Format(b.Price, "c").Replace(",", ""))
为什么?在 CSV 中,您应该将所有包含逗号的内容用引号引起来:

CsvLine.Append(String.Format("\"{0:c}\"", b.Price))

(或者类似的东西......我的VB不是很好)。如果您不确定是否有逗号,请在其周围加上引号。如果字符串中有引号,则需要通过将它们加倍来转义它们。 " 变为 ""

b.Title.Replace("\"", "\"\"")

如果需要的话,可以用引号将其括起来。如果字符串中有换行符,则需要用引号将字符串括起来...是的,CSV 文件中允许使用文字换行符。这对人类来说看起来很奇怪,但这一切都很好。

优秀的 CSV 编写者需要一些思考。一个好的 CSV 阅读器(解析器)非常困难(不,正则表达式不足以解析 CSV...它只能完成大约 95% 的工作)。

然后还有 Unicode...或更普遍的 I18N(国际化)问题。例如,您要从格式化价格中去掉逗号。但这是假设价格的格式符合您在美国的预期。在法国,数字格式是相反的(使用句号代替逗号,反之亦然)。最重要的是,尽可能使用与文化无关的格式。

虽然这里的问题是生成 CSV,但您不可避免地需要解析 CSV。在 .NET 中,我发现的最好的解析器(免费)是 Fast CSV ReaderCodeProject 。我实际上已经在生产代码中使用了它,它真的非常快,而且非常易于使用!

关于asp.net - 如何最好地生成 CSV(逗号分隔文本文件)以供使用 ASP.NET 下载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com