Стили ячеек не применяются к листу Excel из-за кода - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть веб-страница и я пытаюсь оформить новую книгу.Я очень новичок в использовании NPOI.XSSF.UserModel в c #.Я создаю новую книгу Excel с веб-страницы и пробую стиль различных ячеек, при создании и экспорте файла ошибок нет, однако при открытии файла Excel я получаю окно подтверждения

"Мы обнаружили проблему с некоторым содержимым в файле Template.xlsx. Хотите, чтобы мы восстановили столько, сколько мы можем ...",

Я нажимаю "Да, толькостиль, который был применен, является Autosize.Вот выдержка из моей функции.

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using ClosedXML.Excel;
using DocumentFormat.OpenXml.Office2010.ExcelAc;

protected void ExportToExcel(object sender, EventArgs e)
        {
            string columnName = "";
            string fileName = ViewState["KPIListName"].ToString();

            GlobalClass globalClass = new GlobalClass();

            XSSFWorkbook workbook = new XSSFWorkbook();
            XSSFSheet sheet = (XSSFSheet)workbook.CreateSheet("Sheet1");
            XSSFRow row1 = (XSSFRow)sheet.CreateRow(0);

            ICellStyle cellStyle = workbook.CreateCellStyle();
            ICellStyle cellStyleLocked = workbook.CreateCellStyle();
            ICellStyle cellHeaderStyle = workbook.CreateCellStyle();

            var headerFont = workbook.CreateFont();

            headerFont.IsBold = true;
            cellHeaderStyle.SetFont(headerFont);

            cellStyle.FillBackgroundColor = IndexedColors.Grey25Percent.Index;
            cellStyleLocked.IsLocked = true;

            for (int j = 0; j < dt.Columns.Count; j++)
            {
                XSSFCell cell = (XSSFCell)row1.CreateCell(j);

                columnName = dt.Columns[j].ToString();
                cell.SetCellValue(columnName);
                cell.CellStyle = cellHeaderStyle;
                cell.CellStyle = cellStyle;
            }

            //loops through the data
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                XSSFRow row = (XSSFRow)sheet.CreateRow(i + 1);

                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    XSSFCell cell = (XSSFCell)row.CreateCell(j);

                    if (j == 0)
                    {
                        cell.SetCellValue(columnName);
                        cell.CellStyle = headerStyle;
                        cell.CellStyle = cellStyle;
                    }
                    //else
                    //{
                    //    cellStyle.FillBackgroundColor = IndexedColors.White.Index;
                    //    cellStyle.FillPattern = FillPattern.SolidForeground;
                    //}

                    columnName = dt.Columns[j].ToString();

                    cell.SetCellValue(dt.Rows[i][columnName].ToString());
                    cell.CellStyle = cellHeaderStyle;
                    cell.CellStyle = cellStyle;
                    cell.CellStyle = cellStyleLocked;

                    sheet.AutoSizeColumn(j);
                }
            }

            using (var exportData = new MemoryStream())
            {
                Response.Clear();
                workbook.Write(exportData);
                Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", "Template.xlsx"));
                Response.BinaryWrite(exportData.ToArray());
            }

            Response.End();
        }

Это ожидаемый результат, верхняя строка должна быть выделена жирным шрифтом, строки ItemID, Period Type и Period Duration должны быть скрыты, все видимые ячейки должны быть заблокированыдля предотвращения вмешательства пользователя в клетку.

KPI         ActiveDateAndTime   DMS.DMS Production.AMod
ItemID                      36E59B17-C14D-4C56-6209
Plan Type                   Budget
Period Type                 Hour
Period Duration                 8
UoM                     rd
ActiveDateAndTime   2019-04-01 07:00:00 AM  
ActiveDateAndTime   2019-04-01 03:00:00 PM  
ActiveDateAndTime   2019-04-01 11:00:00 PM  
ActiveDateAndTime   2019-04-02 07:00:00 AM  
ActiveDateAndTime   2019-04-02 03:00:00 PM  
ActiveDateAndTime   2019-04-02 11:00:00 PM  

Любая помощь будет принята с благодарностью.

...