在OPEN XML中为单元格设置Font.Bold和Column.Width

时间:2013-08-19 15:58:52

标签: c# visual-studio excel openxml

我一直在使用OPEN XML创建一个可以下载的电子表格。我想设置列宽,并将标题更改为粗体。我使用Office.Interop.Excel完成了这个,但我正在努力使用这种格式。我的代码在下面,你可以看到我已经设置了一个字体但是无法将它分配给我的电子表格,我收到消息说它不可能分配给一个树。

        SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(fileName, SpreadsheetDocumentType.Workbook);    //Open(fileName, true);
        try
        {

            WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart();
            workbookpart.Workbook = new DocumentFormat.OpenXml.Spreadsheet.Workbook();

            WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
            worksheetPart.Worksheet = new DocumentFormat.OpenXml.Spreadsheet.Worksheet(new SheetData());

            DocumentFormat.OpenXml.Spreadsheet.Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.AppendChild<DocumentFormat.OpenXml.Spreadsheet.Sheets>(new DocumentFormat.OpenXml.Spreadsheet.Sheets());
            Sheet sheet = new Sheet() { Id = spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "Models" };
            sheets.Append(sheet);

            DocumentFormat.OpenXml.Spreadsheet.Font boldFont = new DocumentFormat.OpenXml.Spreadsheet.Font();
            Bold bFontBold = new Bold();
            boldFont.Append(bFontBold);

            DocumentFormat.OpenXml.Spreadsheet.Worksheet worksheet = new DocumentFormat.OpenXml.Spreadsheet.Worksheet();
            SheetData sheetData = new SheetData();

 ........

                Row row = new Row();

                Cell cell = new Cell()
                {
                    CellReference = "A" + (intI + 1),
                    DataType = CellValues.String,
                    CellValue = new CellValue(ModelBookrowDetail[0])

                };
                row.Append(cell);

                Cell cell2 = new Cell()
                {
                    CellReference = "B" + (intI + 1),
                    DataType = CellValues.String,
                    CellValue = new CellValue(ModelBookrowDetail[1])
                };
                row.Append(cell2);

 .........

                sheetData.Append(row);
            }

            worksheet.Append(sheetData);
            worksheetPart.Worksheet = worksheet;

            spreadsheetDocument.Close();
        }
        catch
        {
            spreadsheetDocument.Close();
        }

1 个答案:

答案 0 :(得分:4)

我不知道你如何使用OpenXml。我可能会建议调查ClosedXml。到目前为止,它为我节省了很多工时。它只有一个缺点,那就是它不像OpenXml那样管理Word文档。

ClosedXml是一个面向对象的开源库,与我在OpenXml中遇到的情况相比,它的记录要好得多。

您可以在此处找到ClosedXml: https://closedxml.codeplex.com/documentation

祝你好运

Olliver