Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <asp:HyperLink ID="HyperLinkDownload" runat="server" NavigateUrl="~/Download.aspx">Download as CSV file</asp:HyperLink>
- 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
- CsvLine.Append(Format(b.Price, "c").Replace(",", ""))
- CsvLine.Append(String.Format(""{0:c}"", b.Price))
- b.Title.Replace(""", """")
- Function PrepForCSV(ByVal value As String) As String
- return String.Format("""{0}""", Value.Replace("""", """"""))
- End Function
- protected void Page_Load(object sender, EventArgs e)
- {
- using (var db = new bookDevelopmentDataContext())
- {
- string fileName = "book.csv";
- var q = from b in db.books
- select string.Format("{0:d},"{1}","{2}",{3:F2}", b.Published, b.Title.Replace(""", """"), b.Author.Replace(""", """"), t.price);
- string outstring = string.Join(",", q.ToArray());
- Response.Clear();
- Response.ClearHeaders();
- Response.ContentType = "text/csv";
- Response.AppendHeader("Content-Disposition", string.Format("attachment;filename={0}", fileName));
- Response.Write("Published,Title,Author,Price," + outstring);
- Response.End();
- }
- }
- public override void ExecuteResult(ControllerContext context)
- {
- StringBuilder csv = new StringBuilder(10 * Table.Rows.Count * Table.Columns.Count);
- for (int c = 0; c < Table.Columns.Count; c++)
- {
- if (c > 0)
- csv.Append(",");
- DataColumn dc = Table.Columns[c];
- string columnTitleCleaned = CleanCSVString(dc.ColumnName);
- csv.Append(columnTitleCleaned);
- }
- csv.Append(Environment.NewLine);
- foreach (DataRow dr in Table.Rows)
- {
- StringBuilder csvRow = new StringBuilder();
- for(int c = 0; c < Table.Columns.Count; c++)
- {
- if(c != 0)
- csvRow.Append(",");
- object columnValue = dr[c];
- if (columnValue == null)
- csvRow.Append("");
- else
- {
- string columnStringValue = columnValue.ToString();
- string cleanedColumnValue = CleanCSVString(columnStringValue);
- if (columnValue.GetType() == typeof(string) && !columnStringValue.Contains(","))
- {
- cleanedColumnValue = "=" + cleanedColumnValue; // Prevents a number stored in a string from being shown as 8888E+24 in Excel. Example use is the AccountNum field in CI that looks like a number but is really a string.
- }
- csvRow.Append(cleanedColumnValue);
- }
- }
- csv.AppendLine(csvRow.ToString());
- }
- HttpResponseBase response = context.HttpContext.Response;
- response.ContentType = "text/csv";
- response.AppendHeader("Content-Disposition", "attachment;filename=" + this.FileName);
- response.Write(csv.ToString());
- }
- protected string CleanCSVString(string input)
- {
- string output = """ + input.Replace(""", """").Replace("rn", " ").Replace("r", " ").Replace("n", "") + """;
- return output;
- }
Add Comment
Please, Sign In to add comment