datagridview导出为ex​​cel

问题描述:

嘿,我可以将datagridview的数据导出为ex​​cel。但datagridview的实际格式并未导出,即字体,颜色和空间。那么,有没有什么最好的办法来导出datagridview到excel,不仅是数据,还有外观。datagridview导出为ex​​cel

样品外观是: - enter image description here

+0

它看起来像你正在显示某种报告。我建议你使用Crystal Reports或SSRS。他们已经建立了输出为其他格式的设施。如果您手动执行导出,则每次报告格式更改时都必须修改导出功能。 – Eranga 2011-06-01 05:50:28

尝试CSV出口

private void ToCsV(DataGridView dGV, string filename) 
    { 
     string separator = ","; 
     StringBuilder stOutput = new StringBuilder(); 
     // Export titles: 
     StringBuilder sHeaders = new StringBuilder(); 
     for (int j = 0; j < dGV.Columns.Count; j++) 
     { 
      sHeaders.Append(dGV.Columns[j].HeaderText); 
      sHeaders.Append(separator); 
     } 
     stOutput.AppendLine(sHeaders.ToString()); 
     // Export data. 
     for (int i = 0; i < dGV.RowCount - 1; i++) 
     { 
      StringBuilder stLine = new StringBuilder(); 
      for (int j = 0; j < dGV.ColumnCount; j++) 
      { 
       stLine.Append(Convert.ToString(dGV[j, i].Value)); 
       stLine.Append(separator); 
      } 
      stOutput.AppendLine(stLine.ToString()); 
     } 

     File.WriteAllText(filename, stOutput.ToString()); 
    } 
+0

我得到一个错误的'“System.Windows.Forms.DataGridViewRowCollection”不包含一个定义的“细胞” \t'你能帮我 – Dotnet 2011-08-03 09:50:44

+0

这有这么多的错误! dGV.Rows.Cells应该是for(int i = 0; i 2011-09-26 20:54:08

之前您在button_Click事件编写代码,您必须添加到的Microsoft.Office.Interop.Excel对象库的引用。

右键单击您的项目并选择添加引用菜单。之后,转到.NET选项卡并选择并添加Microsoft.Office.Interop.Excel。

将下面的代码写入button_Click事件中。

  // button_Click event 

      private void button11_Click(object sender, EventArgs e) 
      { 
       // creating Excel Application 
       string fileName = String.Empty; 
       Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application(); 
       // creating new WorkBook within Excel application 
       Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing); 
       // creating new Excelsheet in workbook 
       Microsoft.Office.Interop.Excel._Worksheet worksheet = null; 
       // see the excel sheet behind the program 
       app.Visible = true; 
       // get the reference of first sheet. By default its name is Sheet1. 
       // store its reference to worksheet 
       try 
       { 
        //Fixed:(Microsoft.Office.Interop.Excel.Worksheet) 
        worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Sheets["Sheet1"]; 
        worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.ActiveSheet; 
        // changing the name of active sheet 
        worksheet.Name = "Exported from AMIT"; 
        // storing header part in Excel 
        for (int i = 1; i < dataGridView1.Columns.Count + 1; i++) 
        { 
          worksheet.Cells[1, i] = dataGridView1.Columns[i - 1].HeaderText; 
        } 
        // storing Each row and column value to excel sheet 
        for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) 
        { 
          for (int j = 0; j < dataGridView1.Columns.Count; j++) 
          { 
           worksheet.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString(); 
          } 
        } 


        // Save The Application 
        SaveFileDialog saveFileExcel = new SaveFileDialog(); 

        saveFileExcel.Filter = "Excel files |*.xls|All files (*.*)|*.*"; 
        saveFileExcel.FilterIndex = 2; 
        saveFileExcel.RestoreDirectory = true; 


        if (saveFileExcel.ShowDialog() == DialogResult.OK) 
        { 
          fileName = saveFileExcel.FileName; 
          //Fixed-old code :11 para->add 1:Type.Missing 
          workbook.SaveAs(fileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 

        } 
        else 
        { 
          return; 

          // Exit from the application 
          //app.Quit(); 
        } 
       } 
       catch (Exception) 
       { 
        //Statement; 
       } 
       finally 
       { 
        app.Quit(); 
        workbook = null; 
        app = null; 
       } 
      }