条件格式关闭XML错误

本文关键字:XML 错误 格式 条件 | 更新日期: 2024-10-20 18:47:55

我正在使用CloseXML将一些数据从访问导出到excel,我试图对一些日期进行条件格式设置,但我收到了一个NULL异常参考错误。这是我的东西。

 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感谢您的帮助。

条件格式关闭XML错误

原始代码中的问题是使用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);
                   }
                }
            }