From f8cd5c5c7c22189101a3eef6feb78e80beb1761a Mon Sep 17 00:00:00 2001 From: Kurt Date: Sat, 13 Dec 2014 20:02:15 -0800 Subject: [PATCH] Add Export to CSV --- SAV/frmReport.Designer.cs | 5 +++-- SAV/frmReport.cs | 30 +++++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/SAV/frmReport.Designer.cs b/SAV/frmReport.Designer.cs index d27d5ab10..4edcda6e2 100644 --- a/SAV/frmReport.Designer.cs +++ b/SAV/frmReport.Designer.cs @@ -46,19 +46,20 @@ private void InitializeComponent() this.dgData.Location = new System.Drawing.Point(0, 0); this.dgData.Name = "dgData"; this.dgData.RowHeadersVisible = false; - this.dgData.Size = new System.Drawing.Size(790, 461); + this.dgData.Size = new System.Drawing.Size(812, 461); this.dgData.TabIndex = 0; // // frmReport // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(790, 461); + this.ClientSize = new System.Drawing.Size(812, 461); this.Controls.Add(this.dgData); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Name = "frmReport"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "Box Data Report"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.promptSaveCSV); ((System.ComponentModel.ISupportInitialize)(this.dgData)).EndInit(); this.ResumeLayout(false); diff --git a/SAV/frmReport.cs b/SAV/frmReport.cs index e5bc4fe68..0069f31d6 100644 --- a/SAV/frmReport.cs +++ b/SAV/frmReport.cs @@ -10,6 +10,7 @@ using System.Security.Cryptography; using System.Reflection; using System.Text.RegularExpressions; + namespace PKHeX { public partial class frmReport : Form @@ -46,11 +47,38 @@ public void PopulateData(byte[] InputData, int savindex, int baseoffset) dgData.AutoGenerateColumns = true; for (int i = 0; i < dgData.Columns.Count; i++) { - if (dgData.Columns[i].Name == "pkimg") continue; // Don't add sorting for Sprites + if (dgData.Columns[i] is DataGridViewImageColumn) continue; // Don't add sorting for Sprites dgData.Columns[i].SortMode = DataGridViewColumnSortMode.Automatic; } } + private void promptSaveCSV(object sender, FormClosingEventArgs e) + { + if (Util.Prompt(MessageBoxButtons.YesNo,"Save all the data to CSV?") == DialogResult.Yes) + { + SaveFileDialog savecsv = new SaveFileDialog(); + savecsv.Filter = "Spreadsheet|*.csv"; + savecsv.FileName = "Box Data Dump.csv"; + if (savecsv.ShowDialog() == DialogResult.OK) + Export_CSV(savecsv.FileName); + } + } + private void Export_CSV(string path) + { + var sb = new StringBuilder(); + + var headers = dgData.Columns.Cast(); + sb.AppendLine(string.Join(",", headers.Select(column => "\"" + column.HeaderText + "\"").ToArray())); + + foreach (DataGridViewRow row in dgData.Rows) + { + var cells = row.Cells.Cast(); + sb.AppendLine(string.Join(",", cells.Select(cell => "\"" + cell.Value + "\"").ToArray())); + } + System.IO.File.WriteAllText(path, sb.ToString(), Encoding.UTF8); + } + public class PokemonList : SortableBindingList { } + } public static class ExtensionMethods // Speed up scrolling {