如何在OpenXML中管理列

时间:2019-06-25 12:40:54

标签: openxml

我用下面的代码创建了一个带有OpenXMl库的excel文件。 列未获得其宽度,因为它们在代码中定义。 有人有主意吗?

   WorkbookPart workbookPart = document.AddWorkbookPart();
   workbookPart.Workbook = new Workbook();

   WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
   worksheetPart.Worksheet = new Worksheet();

   var workbookStylesPart = workbookPart.AddNewPart<WorkbookStylesPart>();

   workbookStylesPart.Stylesheet = new Stylesheet();

   workbookStylesPart.Stylesheet.Save();

   // Make the columns in the worksheet
   var columns = worksheetPart.Worksheet.GetFirstChild<Columns>();
   bool needToInsertColumns = false;

   if (columns == null)
   {
       columns = new Columns();
       needToInsertColumns = true;
   }

   Column column1 = new Column() { CustomWidth = true, Width = 5};

   columns.Append(column1);
   // Insert the columns into the Worksheet
   if (needToInsertColumns)
   worksheetPart.Worksheet.InsertAt(columns, 0);

   SheetData sheetData = worksheetPart.Worksheet.AppendChild(new SheetData());

   Sheets sheets = workbookPart.Workbook.AppendChild(new Sheets());

   Sheet sheet = new Sheet() { Id = workbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "Employees" };

   sheets.Append(sheet);
   workbookPart.Workbook.Save();
   worksheetPart.Worksheet.Save();
   document.Save();

1 个答案:

答案 0 :(得分:0)

我尝试了以下方法并获得成功:

            var columns = new Columns();
            var column1 = new Column { Min = 1, Max = 1, Width = 5, CustomWidth = true };
            var column2 = new Column { Min = 2, Max = 2, Width = 10, CustomWidth = true };
            var column3 = new Column { Min = 3, Max = 3, Width = 5, CustomWidth = true };
            var column4 = new Column { Min = 4, Max = 4, Width = 20, CustomWidth = true };
            var column5 = new Column { Min = 5, Max = 5, Width = 50, CustomWidth = true };

            columns.Append(column1);
            columns.Append(column2);
            columns.Append(column3);
            columns.Append(column4);
            columns.Append(column5);

            worksheetPart.Worksheet.Append(columns);