【问题标题】:how to change header column colour in the generated excel如何更改生成的excel中的标题列颜色
【发布时间】:2013-08-13 17:10:19
【问题描述】:

我正在将数据从sql server数据库导出到wpf中的excel,并且我已经成功实现了该功能。现在我想更改生成的 excel 中的头列颜色。有任何想法吗?提前致谢。

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        string sql = null;
        string data = null;
       // string path = null;
        //string myfilename = "Report";
        int i = 0;
        int j = 0;

        Microsoft.Office.Interop.Excel.Application xlApp;
        Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
        Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
        object misValue = System.Reflection.Missing.Value;

        //xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();

        xlApp = new Microsoft.Office.Interop.Excel.Application();
        xlWorkBook = xlApp.Workbooks.Add(misValue);
        xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
        xlWorkSheet.Name = "Customer List";

        //connectionString = "data source=servername;initial catalog=databasename;user id=username;password=password;";
        //SqlConnection cnn = new SqlConnection(GetConnectionString());

        SqlConnection cnn = new SqlConnection();
        cnn.ConnectionString = @"Data Source=.\sqlexpress;Initial Catalog=ClientLists;Integrated Security=SSPI;";
        cnn.Open();
        sql = "select FirstName, LastName, City, PostCode, TelephoneNo from Customers";
        SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn);
        DataSet ds = new DataSet();
        dscmd.Fill(ds);


        for (i = 0; i <= ds.Tables[0].Rows.Count -1; i++)
        {
            for (j = 0; j <= ds.Tables[0].Columns.Count -1; j++)
            {
                data = ds.Tables[0].Rows[i].ItemArray[j].ToString();
                xlWorkSheet.Cells[i + 2, j + 1] = data;
            }
        }

         Microsoft.Office.Interop.Excel.Range headerRange1 = xlWorkSheet.get_Range("A1", "A1");
        headerRange1.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
        headerRange1.Value = "First Name";
        headerRange1.Font.Bold = true;
        headerRange1.ColumnWidth = 14;
     // headerRange1.Interior.Color = 1;
     // headerRange1.Borders.Color = System.Drawing.Color.Red;


        Microsoft.Office.Interop.Excel.Range headerRange2 = xlWorkSheet.get_Range("B1", "B1");
        headerRange2.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
        headerRange2.Value = "Last Name";
        headerRange2.Font.Bold = true;
        headerRange2.ColumnWidth = 14;

        Microsoft.Office.Interop.Excel.Range headerRange3 = xlWorkSheet.get_Range("C1", "C1");
        headerRange3.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
        headerRange3.Value = "City";
        headerRange3.Font.Bold = true;
        headerRange3.ColumnWidth = 14;

        Microsoft.Office.Interop.Excel.Range headerRange4 = xlWorkSheet.get_Range("D1", "D1");
        headerRange4.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
        headerRange4.Value = "Post Code";
        headerRange4.Font.Bold = true;
        headerRange4.ColumnWidth = 14;

        Microsoft.Office.Interop.Excel.Range headerRange5 = xlWorkSheet.get_Range("E1", "E1");
        headerRange5.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
        headerRange5.Value = "Telephone NO";
        headerRange5.Font.Bold = true;
        headerRange5.ColumnWidth = 14;




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


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

    private void releaseObject(object obj)
    {
        try
        {
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
            obj = null;
        }
        catch (Exception ex)
        {
            obj = null;
            MessageBox.Show("Exception Occured while releasing object " + ex.ToString());
        }
        finally
        {
            GC.Collect();
        }
    }

    }
}

【问题讨论】:

    标签: excel export-to-excel


    【解决方案1】:

    可以找到here 的帖子说这是不可能的。

    但是,StackOverflow 上的 c# excel how to change a color of a particular row 帖子提供了更改行颜色的代码...您可能可以根据您的目的对其进行调整。

    【讨论】:

    • 感谢您的帮助。我更改了代码,可以在上面的代码中更改颜色。但是现在我想添加一个开放式对话,我在 google 和 stackoverflow 中尝试了很多研究,它不适用于我的应用程序。有什么想法吗?
    • @DanielXu,如果您还有其他问题,请在单独的问题中提出。还请撤消您对此问题的更改,以便其他用户可以从答案中受益,现在您已经更改了问题文本,这没有任何意义。进一步的请求...如果它帮助您解决问题,请将答案标记为正确。
    • 由于之前的方法没找到改颜色的方法,所以我把代码改成上面的,现在可以改颜色了。你觉得有必要留下之前的代码吗?
    • 如果你在这里经常这样做,你可能会被踢出 SO。用户在这里提问,其他用户尝试回答这些问题。如果你没有得到你喜欢的答案,你不应该改变问题和标题。如果您想问一个不同的问题,请留下第一个问题并提出一个新问题。如果您获得了对您的问题有用的信息,您完全可以添加您的问题的更新,但您不应该更改它,尤其是不要像您所做的那样完全更改。如果我是你,我会将你的新问题复制到一个新问题并在此处撤消你的更改。
    • 谢谢你告诉我。我会照你说的做。由于我是stackoverflow的新手,对此感到抱歉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多