DataGridView中到Excel用彩色细胞 [英] DataGridView To Excel With Colored Cells

查看:207
本文介绍了DataGridView中到Excel用彩色细胞的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



我想转换的datagridview出类拔萃。



我的结果
http://i.imgur.com/ujvGiXX巴纽



但其转换到Excel这样的
http://i.imgur.com/0OXkUkL.png



我要复制单元格的大小和颜色,但怎么样?



我转换成与此代码先争优

  Excel.Application xlApp ; 
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
对象misValue = System.Reflection.Missing.Value;

Int16的I,J;

xlApp =新Excel.Application();
xlWorkBook = xlApp.Workbooks.Add(misValue);

xlWorkSheet =(Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

为(i = 0; I< = dataGridView1.RowCount - 2;我++)
{
为(J = 0; J< = dataGridView1.ColumnCount - 1 ; J ++)
{
xlWorkSheet.Cells [I + 1,J + 1] = dataGridView1 [J,I] .Value.ToString();
}
}

SaveFileDialog SFD =新SaveFileDialog();
sfd.Filter =Excel文档(的* .xls)| * .xls的;
sfd.FileName = listBox1.SelectedItem.ToString()++ listBox3.SelectedItem.ToString()+STOKReçeteleri+的.xls


如果(sfd.ShowDialog()== DialogResult.OK)
{
// ToCsV(dataGridView1,sfd.FileName); //这里dataGridview1是网格视图名称
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 =新的FileInfo(sfd.FileName);
}


xlWorkBook.Close(真,misValue,misValue);
xlApp.Quit();

releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject( xlApp);


解决方案

更新内部循环是:< BR>

 为(i = 0; I< = dataGridView1.RowCount  -  2;我++)
{
。对于(J = 0; J< = dataGridView1.ColumnCount - 1; J ++)
{
范围范围=(范围)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);

}
}

不要忘了:结果

 使用的Microsoft.Office.Interop.Excel; 

请参阅:结果的更改与C#


细胞的背景

I looked a lots of example and demo but I could not to it.

I'm trying to convert datagridview to excel.

My Results http://i.imgur.com/ujvGiXX.png

But its convert to excel like this http://i.imgur.com/0OXkUkL.png

I want to copy cells size and color but how?

I convert to excel with this code

        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);

解决方案

update the internal loop to be:

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 );

                }
            }

don't forget:

using Microsoft.Office.Interop.Excel;

see:
Change the background of Cells with C#

这篇关于DataGridView中到Excel用彩色细胞的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆