Чтобы достичь этого, вам нужно сделать две вещи. Во-первых, вам нужно добавить экземпляр PageSetupProperties
в экземпляр SheetProperties
, который, в свою очередь, должен быть добавлен к вашему Worksheet
. У PageSetupProperties
есть свойство FitToPage
, которое устанавливает переключатель в Excel в «Fit to».
Далее вам нужно использовать класс PageSetup
, чтобы установить необходимую ширину и высоту. Это делается через свойства FitToWidth
и FitToHeight
. PageSetup
также необходимо добавить к Worksheet
.
Обратите внимание, что порядок элементов важен, вы можете увидеть правильный порядок в спецификации ECMA.
Ниже приведен автономный пример, который добавляет одну ячейку, а затем устанавливает свойства так, как вам нужно:
using (SpreadsheetDocument myDoc = SpreadsheetDocument.Create(filename, SpreadsheetDocumentType.Workbook))
{
WorkbookPart workbookpart = myDoc.AddWorkbookPart();
workbookpart.Workbook = new Workbook();
// Add a WorksheetPart to the WorkbookPart.
WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
SheetData sheetData = new SheetData();
//add a row
Row row = new Row();
row.RowIndex = 1;
//create a cell
Cell cell = new Cell();
cell.CellReference = "A1";
CellValue cellValue = new CellValue();
cellValue.Text = "123";
cell.Append(cellValue);
row.AppendChild(cell);
sheetData.AppendChild(row);
// Add a WorkbookPart to the document.
worksheetPart.Worksheet = new Worksheet(sheetData);
//this sets the "Fit to" radio in Excel.
//note this must come before the SheetData
SheetProperties sheetProperties = new SheetProperties();
PageSetupProperties pageSetupProperties = new PageSetupProperties() { FitToPage = true };
sheetProperties.Append(pageSetupProperties);
worksheetPart.Worksheet.InsertBefore(sheetProperties, sheetData);
// this changes the fit to width and height
PageSetup pageSetup = new PageSetup() { FitToWidth = 1, FitToHeight = 43 };
worksheetPart.Worksheet.AppendChild(pageSetup);
//append the sheets / sheet
Sheets sheets = myDoc.WorkbookPart.Workbook.AppendChild(new Sheets());
sheets.AppendChild(new Sheet()
{
Id = myDoc.WorkbookPart.GetIdOfPart(myDoc.WorkbookPart.WorksheetParts.First()),
SheetId = 1,
Name = "Sheet1"
});
}