在WPF中使用开放XML根据单元格值为单元格着色

本文关键字:单元格 XML WPF | 更新日期: 2023-09-27 17:49:53

我已经使用Open XML导出了excel中的数据,现在我需要根据单元格值为几列的单元格添加颜色。

我已经从下面的链接中获得了导出的帮助:http://justgeeks.blogspot.com/2012/03/writing-large-amounts-of-data-from.html

有谁能帮我上色吗?我的数据在数据表中。

示例图片:http://tinypic.com/r/2yuwnbl/8

在WPF中使用开放XML根据单元格值为单元格着色

试试下面的代码…

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Drawing;
namespace webapp1
{
    public partial class _Default : System.Web.UI.Page
    {
    DataTable dtDetails = new DataTable();

    protected void Grd_QADetails_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            var dataRowView = e.Row.DataItem as DataRowView;
            DataRow row = dataRowView.Row;
            var Current = (row["Dosage"] as int?) ?? null;

            if (Current != null)
            {
                if (Current >= 1 && Current < 10)
                    e.Row.Cells[1].BackColor = Color.Green;
                else if (Current >= 10 && Current < 20)
                    e.Row.Cells[1].BackColor = Color.Yellow;
                else
                    e.Row.Cells[1].BackColor = Color.Red;
            }
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {

        dtDetails.Columns.Add("Dosage", typeof(int));
        dtDetails.Columns.Add("Drug Suggested", typeof(string));
        dtDetails.Columns.Add("Patient Name", typeof(string));
        dtDetails.Columns.Add("Date", typeof(DateTime));
        dtDetails.Columns.Add("Type", typeof(string));
        dtDetails.Columns.Add("Payment Mode", typeof(string));
        dtDetails.Columns.Add("Appointment Status", typeof(string));
        dtDetails.Columns.Add("Location", typeof(string));
        dtDetails.Rows.Add(1, "Indocin", "David", DateTime.Now, "Casuality", "Cash", "Pending", "Kolkatta");
        dtDetails.Rows.Add(2, "Enebrel", "Sam", DateTime.Now, "Casuality", "Cash", "Pending", "Kolkatta");
        dtDetails.Rows.Add(3, "Hydralazine", "Christoff", DateTime.Now, "Casuality", "Cash", "Pending", "Kolkatta");
        dtDetails.Rows.Add(4, "Combivent", "Janet", DateTime.Now, "Casuality", "Cash", "Pending", "Kolkatta");
        dtDetails.Rows.Add(5, "Dilantin", "Melanie", DateTime.Now, "Casuality", "Cash", "Pending", "Kolkatta");
        dtDetails.Rows.Add(6, "Indocin", "David", DateTime.Now, "Casuality", "Cash", "Pending", "Kolkatta");
        dtDetails.Rows.Add(7, "Enebrel", "Sam", DateTime.Now, "Casuality", "Cash", "Pending", "Kolkatta");
        dtDetails.Rows.Add(8, "Hydralazine", "Christoff", DateTime.Now, "Casuality", "Cash", "Pending", "Kolkatta");
        dtDetails.Rows.Add(9, "Combivent", "Janet", DateTime.Now, "Casuality", "Cash", "Pending", "Kolkatta");
        dtDetails.Rows.Add(10, "Dilantin", "Melanie", DateTime.Now, "Casuality", "Cash", "Pending", "Kolkatta");
        dtDetails.Rows.Add(11, "Indocin", "David", DateTime.Now, "Casuality", "Cash", "Pending", "Kolkatta");
        dtDetails.Rows.Add(12, "Enebrel", "Sam", DateTime.Now, "Casuality", "Cash", "Pending", "Kolkatta");
        dtDetails.Rows.Add(13, "Hydralazine", "Christoff", DateTime.Now, "Casuality", "Cash", "Pending", "Kolkatta");
        dtDetails.Rows.Add(14, "Combivent", "Janet", DateTime.Now, "Casuality", "Cash", "Pending", "Kolkatta");
        dtDetails.Rows.Add(15, "Dilantin", "Melanie", DateTime.Now, "Casuality", "Cash", "Pending", "Kolkatta");

        if (!IsPostBack)
        {
            grdDetails.DataSource = dtDetails;
            grdDetails.DataBind();
        }
    }
    protected void ExportToGrid(object sender, EventArgs e)
    {
        ExportToGrid(dtDetails);
    }
    private void ExportToGrid(DataTable dt)
    {
        if (dt.Rows.Count > 0)
        {
            string filename = "Test" + ".xls";
            using (System.IO.StringWriter tw = new System.IO.StringWriter())
            {
                System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
                GridView dgGrid = new GridView();
                dgGrid.DataSource = dt;
                dgGrid.RowDataBound += new GridViewRowEventHandler(Grd_QADetails_RowDataBound);
                dgGrid.DataBind();
                //Get the HTML for the control.
                dgGrid.RenderControl(hw);
                //Write the HTML back to the browser.
                Response.ContentType = "application/vnd.ms-excel";
                Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + "");
                this.EnableViewState = false;
                Response.Write("<meta http-equiv=Content-Type content='"text/html; charset=utf-8'">" + Environment.NewLine);
                Response.Write(tw.ToString());
                Response.Write("</body>");
                Response.Write("</html>");
                Response.End();
            }
        }
    }
}

}

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="webapp1._Default" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <asp:GridView runat="server" ID="grdDetails" OnRowDataBound="Grd_QADetails_RowDataBound">
    </asp:GridView>
    <asp:Button  runat="server" ID="btnSubmit" OnClick="ExportToGrid"/>
</asp:Content>