如何最好地生成CSV(逗号分隔的文本文件)以便下载ASP.NET?
|
这就是我所拥有的有用。但是,是否有更简单或更好的方式? 一个ASPX页面,我有下载链接… <asp:HyperLink ID="HyperLinkDownload" runat="server" NavigateUrl="~/Download.aspx">Download as CSV file</asp:HyperLink> 然后我已经下载了.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格式有一些问题。你问自己这些问题:>我的任何数据是否嵌入了逗号? 我在上面的代码中看到了几个问题。逗号首先是你取消逗号: CsvLine.Append(Format(b.Price,"")) 为什么?在CSV中,您应该围绕任何带有逗号的引号: CsvLine.Append(String.Format(""{0:c}"",b.Price))
(或类似的东西…我的VB不是很好)。如果您不确定是否有逗号,但是会引用引号。如果字符串中有引号,则需要将它们翻倍。 “变成”“。 b.Title.Replace(""","""")
如果你想要的话,用引号括起来。如果您的字符串中有换行符,则需要使用引号将字符串环绕。是的,CSV文件中允许使用文字换行符。这对人类来说看起来很奇怪,但这一切都很好。 一个好的CSV作者需要一些想法。一个好的CSV读取器(解析器)只是很难(而不是,正则表达式不足以解析CSV …它只会让你约95%的方式)。 然后有Unicode …或更一般的I18N(国际化)问题。例如,您正在以格式化的价格取消逗号。但是,假设价格是按照您在美国预期的格式。在法国,数字格式是相反的(使用的是句点,而不是逗号,反之亦然)。底线,尽可能使用与文化无关的格式。 虽然这里的问题是生成CSV,但您不可避免地需要解析CSV。在.NET中,我发现(免费)的最好的解析器是0700在CodeProject.我实际上使用它在生产代码,它真的很快,很容易使用! (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET:存储应用程序设置的位置?
- asp.net-mvc – 在MVC3中使用两个可选参数的路由不起作用
- asp.net – 测试Oracle存储过程的最简单的方法
- asp.net-mvc-3 – 不能将lambda表达式转换为’string’类型
- ASP.NET / MVC 4在64位IIS 7.5服务器上捆绑和缩小404问题
- asp.net-mvc – 流畅的验证自定义验证规则
- asp.net – System.Reflection.Assembly.LoadFile锁定文件
- ASP.NET MVC API 接口验证的示例代码
- asp.net-mvc – 我应该在ASP.NET MVC中使用Anti-XSS安全运行
- asp.net-mvc – ASP.NET MVC 4路由 – controller / id与co
- 在ASP.NET中创建一个适用于黑莓,Windows Mobile和
- asp.net-mvc – Asp.Net Mvc – Html.TextBox –
- asp.net-mvc – ASP.NET MVC:在回发上更改模型的
- asp.net-mvc – MVC Razor – 如何向自己提交表单
- asp.net – 微软的AJAX Toolkit与jQuery
- 实体框架 – 对ASP.NET MVC Onion架构的意见
- ASP.NET %=% vs %:%
- asp.net-mvc-4 – 如何解决错误“安全透明方法尝
- asp.net – 在所选数据源上找不到具有该名称的字
- asp.net 读取并修改config文件实现代码
