【问题标题】:Conditional Formatting ClosedXML Error条件格式 ClosedXML 错误
【发布时间】:2015-03-06 21:07:07
【问题描述】:

我正在使用 CloseXML 将一些数据从访问权限导出到 excel,我正在尝试对某些日期进行条件格式设置,但我收到了 NULL EXCEPTION REFERENCE ERROR。这是我所拥有的。

 using (OleDbConnection connection = new OleDbConnection(conecctionstring))
            {
                string selectquery = "querystring";


                using (OleDbDataAdapter selectCommand = new OleDbDataAdapter(selectquery, connection))
                {
                    DtSet1 = new DataSet();
                    selectCommand.Fill(DtSet2, "Table1");

                    var wb = new XLWorkbook();

                    var saveFileDialog = new SaveFileDialog
                    {
                        Filter = "Excel files|*.xlsx",
                        Title = "Save an Excel File"
                    };

                    wb.Worksheets.Add(DtSet1);

                    wb.Range("C:C").AddConditionalFormat().WhenEqualOrGreaterThan(DateTime.Now.ToOADate()).Fill.SetBackgroundColor(XLColor.Red);

                    saveFileDialog.ShowDialog();

                    if (!String.IsNullOrWhiteSpace(saveFileDialog.FileName))
                        wb.SaveAs(saveFileDialog.FileName);

                }
            }

我正在使用 C#、OpenXML 和 Access DB 任何帮助表示赞赏。

【问题讨论】:

  • 哪一行产生了错误?
  • "wb.Range("C:C").AddConditionalFormat().WhenEqualOrGreaterThan(DateTime.Now.ToOADate()).Fill.SetBackgroundColor(XLColor.Red)"

标签: c# conditional-formatting closedxml


【解决方案1】:

原始代码中的问题是您使用Workbook.Range("C:C") 而不是Worksheet.Range()。工作簿本身没有“C”列,因此这是一个无效范围。工作代码:

wb.Worksheet(1).Range("C:C").AddConditionalFormat().WhenEqualOrGreaterThan(DateTime.Now.ToOADate()).Fill.SetBackgroundColor(XLColor.Red);

它与加载和保存文件无关。

【讨论】:

    【解决方案2】:

    错误是您必须先加载文件,然后才能对其进行任何修改,例如条件格式,并以当前格式再次保存文件。

    这是我的解决方案。 注意:添加了另一个条件。

     using (OleDbConnection connection = new OleDbConnection(conecctionstring))
                {
                    string selectquery = "string query";
    
                    using (OleDbDataAdapter selectCommand = new OleDbDataAdapter(selectquery, connection))
                    {
                        DtSet1 = new DataSet();
                        selectCommand.Fill(DtSet1, "Table1");
    
                        var wb = new XLWorkbook();
    
                        var saveFileDialog = new SaveFileDialog
                        {
                            Filter = "Excel files|*.xlsx",
                            Title = "Save an Excel File"
                        };
    
                        wb.Worksheets.Add(DtSet1);
    
                        saveFileDialog.ShowDialog();
    
    
                        if (!String.IsNullOrWhiteSpace(saveFileDialog.FileName))
                        {
                            wb.SaveAs(saveFileDialog.FileName);
    
                            var workbook = new XLWorkbook(saveFileDialog.FileName);
                            var ws = workbook.Worksheet(1);
    
                            ws.Range("C2:C100").AddConditionalFormat().WhenEqualOrLessThan(DateTime.Now.ToOADate()).Fill.SetBackgroundColor(XLColor.Red);
                            ws.Range("C2:C100").AddConditionalFormat().WhenGreaterThan(DateTime.Now.ToOADate() + 6).Fill.SetBackgroundColor(XLColor.Orange);
                            workbook.SaveAs(saveFileDialog.FileName);
                       }
                    }
                }
    

    【讨论】:

      猜你喜欢
      • 2015-10-30
      • 1970-01-01
      • 2015-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-09
      • 1970-01-01
      相关资源
      最近更新 更多