C# DataGridView使用彩色单元格显示Excel
我看了很多例子和演示,但我看不懂 我正在尝试将datagridview转换为excel 我的结果 但它是这样转换成excel的 我想复制单元格的大小和颜色,但如何复制 我使用此代码转换为excelC# DataGridView使用彩色单元格显示Excel,c#,sql-server,excel,C#,Sql Server,Excel,我看了很多例子和演示,但我看不懂 我正在尝试将datagridview转换为excel 我的结果 但它是这样转换成excel的 我想复制单元格的大小和颜色,但如何复制 我使用此代码转换为excel Excel.Application xlApp; Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; object misValue = System.Reflection.
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);
Excel.applicationxlapp;
Excel.工作簿;
Excel工作表;
对象错误值=System.Reflection.Missing.Value;
int16i,j;
xlApp=new Excel.Application();
xlWorkBook=xlApp.Workbooks.Add(错误值);
xlWorkSheet=(Excel.Worksheet)xlWorkBook.Worksheets.get_项(1);
对于(i=0;i请尝试将此代码导出到excel,而不是您正在使用的内容。不过,我将此代码用于web应用程序
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. */
}
将内部循环更新为:
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 );
}
}
请参阅:
您最好使用epplus而不是office interop,尤其是服务器端。谢谢您的建议。是的,使用epplus而不是interop。interop应该是最后的手段,即使这样,您也应该重新考虑。我只是将这一行更改为range.Interior.Color=System.Drawing.ColorTranslator.ToOle(dgv.Rows[I].DefaultCellStyle.BackColor);
using Microsoft.Office.Interop.Excel;