首先,我还是相当新的编程,所以请原谅我可能提供的知识或术语的任何失误。从datagridview导出空单元格到csv逗号分隔文件
我正在构建一个C#应用程序,它首先将数据从Excel工作簿导入一组datagridviews(每个工作表一个dgv)。用户可以从每个数据网格中选择一个自定义范围的单元格,然后单击一个按钮将选定范围导出到CSV文件。到目前为止,我拥有大部分需要工作的东西,但是我遇到的问题是它最后跳过了空白单元格,我需要将它们包含在csv的最终输出中。例如,如果单元格A1到A3有一个值,但A4没有,并且用户选择通过A4范围A1,最终CSV需要输出为:
1,2,3,
然而,我现在有它的方式,它只输出1,2,3
。如果在范围的末尾有多个空白单元格,它会做同样的事情,我们需要这些空白单元格。
要注意的是,如果空白单元格出现在范围内的任何地方,它可以正常工作......只有单元格在这个范围的开始或结束时是空的,这似乎发生了。
如果我将任何空值或空值重置为“”,它将作为一种解决方法,但我更希望末尾文件中没有任何空白类型的值。
我感谢所有帮助。这里是我的代码处理这个导出功能:
private void exportClick(DataGridView dgv)
{
Int32 selectedCellCount = dgv.GetCellCount(DataGridViewElementStates.Selected);
int CurrentRow = 0;
int CurrentColumn = 0;
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
if (selectedCellCount > 0)
{
for (int i = 0; i < selectedCellCount; i++)
{
// Get the Row and Column index values
CurrentRow = Convert.ToInt16(dgv.SelectedCells[i].RowIndex.ToString());
CurrentColumn = Convert.ToInt16(dgv.SelectedCells[i].ColumnIndex.ToString());
// Set cell to current cells' value
DataGridViewCell cell = dgv[CurrentColumn, CurrentRow];
// Check if the cell Value is empty, set to ??? so a comma is written
if (String.IsNullOrEmpty(cell.Value.ToString()))
cell.Value = " ";
// Write the value to the worksheet
xlWorkSheet.Cells[CurrentRow + 1, CurrentColumn + 1] = cell.Value;
}
// Prompt to save the results as a csv file
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
xlWorkBook.SaveAs(saveFileDialog1.FileName, Excel.XlFileFormat.xlCSV, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
}
}
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);
}
谢谢埃珀。最终,我决定跳过输出到Excel,并使用管道分隔符将输出写入文本文件。由于Excel csv的默认逗号分隔结果,我们需要为此找到一种不同的方法,因为我们的一些数据可能包含逗号。虽然我很欣赏这个反馈! – svenGUTT
@svenGUTT很好,你可以根据你的需求找到工作。快乐编码和上帝保佑! – Edper