public void dgvExportToCsv(DataGridView dgvValue, string csvFullFilename, string delimiter = ",", List<int> omitRowIdxList = null, List<int> omitColumnIdxList = null, List<int> useTagColumnIdxList = null) { StreamWriter csvStreamWriter = new StreamWriter(csvFullFilename, false, System.Text.Encoding.UTF8); int rowIdx = 0, realRowIdx = 0; int columnIdx = 0, realColumnIdx = 0; //output header data string headerRowStr = ""; for (columnIdx = 0, realColumnIdx = 0; columnIdx <= dgvValue.ColumnCount - 1; columnIdx++) { if ((omitColumnIdxList != null) && omitColumnIdxList.Contains(columnIdx)) { //omit this column } else { headerRowStr += dgvValue.Columns[columnIdx].HeaderText + delimiter; realColumnIdx++; } } csvStreamWriter.WriteLine(headerRowStr); //output rows data for (rowIdx = 0, realRowIdx = 0; rowIdx <= dgvValue.RowCount - 1; rowIdx++) { if ((omitRowIdxList != null) && omitRowIdxList.Contains(rowIdx)) { //omit this row } else { string eachRowStr = ""; for (columnIdx = 0, realColumnIdx = 0; columnIdx <= dgvValue.ColumnCount - 1; columnIdx++) { if ((omitColumnIdxList != null) && omitColumnIdxList.Contains(columnIdx)) { //omit this column } else { DataGridViewCell curCell = dgvValue[columnIdx, rowIdx];//dgvValue.Rows[rowIdx].Cells[columnIdx] if ((useTagColumnIdxList != null) && useTagColumnIdxList.Contains(columnIdx)) { eachRowStr += curCell.Tag + delimiter; } else { eachRowStr += curCell.Value + delimiter; } realColumnIdx++; } } csvStreamWriter.WriteLine(eachRowStr); realRowIdx++; } } csvStreamWriter.Close(); }
例 15.5. dgvExportToCsv 的使用范例
string outputFilename = txbExpAlertFilename.Text + ".csv"; string fullFilename = Path.Combine(saveFolderPath, outputFilename); List<int> omitColumnIdxList = new List<int>(); //omit the last column: View page omitColumnIdxList.Add(dgvSearchedAlerts.ColumnCount - 1); crifanLib.dgvExportToCsv(dgvSearchedAlerts, fullFilename, omitColumnIdxList: omitColumnIdxList);