首先,我還是相當新的編程,所以請原諒我可能提供的知識或術語的任何失誤。從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