0

我正在将数据从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();
        }
    }

    }
}
4

1 回答 1

0

有一个帖子可以在这里找到,说这是不可能的。

但是,c# excel 如何更改 StackOverflow 上特定行帖子的颜色,它提供了更改行颜色的代码......您可以根据自己的目的对其进行调整。

于 2013-08-12T14:49:08.910 回答