簡體   English   中英

條件格式的ClosedXML錯誤

[英]Conditional Formatting ClosedXML Error

我正在使用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。不勝感激。

原始代碼中的問題是您使用Workbook.Range("C:C")而不是Worksheet.Range() 工作簿本身沒有列“ C”,因此這是無效范圍。 工作代碼:

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

它與加載和保存文件無關。

錯誤是您必須先加載文件,然后才能對文件進行任何修改(如條件格式設置),然后再次使用當前格式保存文件。

這是我的解決方案。 注意:添加了另一個條件。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM