删除列和空行

编程入门 行业动态 更新时间:2024-10-26 22:17:10
本文介绍了删除列和空行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我遇到了一个问题,我无法帮助自己。 我的程序加载一个CSV(excel)文件,其中包含所有分配的数据库内置a] line1。 ex; A-1 = testcol,testcol,testcol ex; A-2 = value1,value2,value3 现在我的东西在他们自己的专栏中读得很好,但我似乎无法正确保存它们。 一旦保存我的程序就决定添加另一列和整个空行。 所以我的文件现在出现; ex; A-1 = testcol,testcol,testcol,column1 ex; A-2 = NULL,NULL,NULL,NULL i想要删除Column1(并保存文件而不执行此操作)。 以及删除空行.. 这是我的保存程序的样子:

I got an issue i cannot help myself out with. My program loads an CSV (excel) file which has a database build-in all assigned in [a] line1. ex; A-1 = testcol,testcol,testcol ex; A-2 = value1,value2,value3 now i've got my things to read just fine in their own columns, but i cant seem to save them correctly. once its saved my program decides to add another Column and a whole Empty Row. so my file now occurs as; ex; A-1 = testcol,testcol,testcol,column1 ex; A-2 = NULL,NULL,NULL,NULL i would like to remove the Column1 (and save the file without doing this). aswell as removing the empty row.. This is how my save procedure looks like:

/* Used to count the line(s)*/ toolStripProgressBar1.Value = 0; // Don't save if no data is returned if (dataGridView1.Rows.Count == 0) { return; } StringBuilder sb = new StringBuilder(); // Column headers string columnsHeader = ""; for (int i = 0; i < dataGridView1.Columns.Count; i++) { columnsHeader += dataGridView1.Columns[i].Name + ","; } sb.Append(columnsHeader + Environment.NewLine); // Go through each cell in the datagridview foreach (DataGridViewRow dgvRow in dataGridView1.Rows) { // Make sure it's not an empty row. if (!dgvRow.IsNewRow) { for (int c = 0; c < dgvRow.Cells.Count; c++) { // Append the cells data followed by a comma to delimit. sb.Append(dgvRow.Cells[c].Value + ","); } // Add a new line in the text file. sb.Append(Environment.NewLine); } } // Load up the save file dialog with the default option as saving as a .csv file. SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "CSV files (*.csv)|*.csv"; if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { int maxnumber = 100; toolStripProgressBar1.Value = 0; toolStripProgressBar1.Maximum = maxnumber; for (int x = 0; x <= maxnumber - 1; x++) { toolStripProgressBar1.Value += 1; // If they've selected a save location... using (System.IO.StreamWriter sw = new System.IO.StreamWriter(sfd.FileName, false)) { string result; result = Path.GetFileNameWithoutExtension(sfd.FileName); tabPage1.Text = result; toolStripStatusLabel1.Text = "[1]File Saved! - " + result; // Write the stringbuilder text to the the file. sw.WriteLine(sb.ToString()); } } }

i在这个网站上没有空间可以放我的负载这里有一个例子,但它低于这一行,你想要全部阅读。

i have no space here on this website to either put my load example here, but its below this line incase you do want to read it all.

OpenFileDialog openFile = new OpenFileDialog(); openFile.InitialDirectory = "c:\\"; //" // [Edit] Colour fix openFile.Filter = " All Files (*.*) | *.*| CSV Files (*.csv) | *.csv"; openFile.FilterIndex = 2; openFile.RestoreDirectory = true; try { /* Always Clear the datagrid first before loading again.*/ if (this.dataGridView1.DataSource != null) { this.dataGridView1.DataSource = null; } else { this.dataGridView1.Rows.Clear(); } /* Used to count the line(s)*/ toolStripProgressBar1.Value = 0; if (openFile.ShowDialog() == DialogResult.OK) { /* Make sure combobox is cleared out before we load another one.*/ comboBox1.Items.Clear(); /* Define file name = file selected*/ string file = openFile.FileName; StreamReader sr = new StreamReader(file); /*Result = filename*/ string result; result = Path.GetFileNameWithoutExtension(file); tabPage1.Text = result; /* gets all the lines of the csv */ string[] str = File.ReadAllLines(file); /* creates a data table*/ DataTable dt = new DataTable(); /* gets the column headers from the first line*/ string[] temp = str[0].Split(','); /* creates columns of the gridview base on what is stored in the temp array */ foreach (string t in temp) { dt.Columns.Add(t, typeof(string)); comboBox1.Items.Add(t); } /* gets the amount of row(s) loaded. */ var lines = File.ReadAllLines(file); var count = lines.Length; /* retrieves the rows after the first row and adds it to the datatable */ for (int i = 1; i &lt; str.Length; i++) { toolStripProgressBar1.Value += 1; toolStripProgressBar1.Maximum = count; List<string> list = new List<string>(str[i].Split(',')); if (str[i].Contains('"')) { for (int j = 0; j < list.Count; j++) { while ((list[j].Split('"').Length % 2) == 1) { list[j] += "," + list[j + 1]; list.RemoveAt(j + 1); } if (list[j].StartsWith("\"") && list[j].EndsWith("\"")) list[j] = list[j].Substring(1, list[j].Length - 2); } } else { string[] t = str[i].Split(','); dt.Rows.Add(t); } } //The datagridview will now be populated with data from all the other rows except the first. dataGridView1.DataSource = dt; toolStripStatusLabel1.Text = "[1]Lines loaded: " + count; } } catch (Exception ex) { ////If there is a issue, report it to the user, but also to the event logger. MessageBox.Show("[1]Error: The CSV you selected could not be loaded \n\n" + ex.Message, "Load Information", MessageBoxButtons.OK, MessageBoxIcon.Information); }

请帮帮我,我不知道如何解决这个问题非常重要我的数据库保存正确:)

please help me, i have no idea how to fix this and its quite important i get my database saving right :)

推荐答案

修复它感谢您的帮助和努力。 它恰好是我的算法'(保存的方式)'不是可选的,所以我重新编码它,我想出它为什么这样做,(感谢调试'断点')。 这是我提出的解决方案解决了它; Fixed it thank you for all the help and effort. it occurs to be that my Algorithm '(the way of saving)' wasnt optional, so i re-coded it and i figured it out why it did so, (thanks to debugging 'Breakpoint'). This is the fix i've came up with that solved it; // Column headers string columnsHeader = ""; for (int i = 0; i < dataGridView1.Columns.Count; i++) { if (i != dataGridView1.Columns.Count - 1) { columnsHeader += dataGridView1.Columns[i].Name + ","; } else { columnsHeader += dataGridView1.Columns[i].Name; } } sb.Append(columnsHeader + Environment.NewLine); // Go through each cell in the datagridview for (int q = 0; q < dataGridView1.RowCount; q++) { // Make sure it's not an empty row. for (int c = 0; c < dataGridView1.Rows[q].Cells.Count; c++) { if (c != dataGridView1.Rows[q].Cells.Count - 1) { // Append the cells data followed by a comma to delimit. sb.Append(dataGridView1.Rows[q].Cells[c].Value + ","); } else { sb.Append(dataGridView1.Rows[q].Cells[c].Value); } } // Add a new line in the text file. if (q != dataGridView1.RowCount - 1) sb.Append(Environment.NewLine); }

非常感谢你们:))

thank you all so much :)

更多推荐

删除列和空行

本文发布于:2023-10-17 02:59:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1499577.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:空行

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!