C# 设置Excel电子表格列属性问题

C# 设置Excel电子表格列属性问题,c#,excel,openxml,C#,Excel,Openxml,我试图使用OpenXML框架在Excel电子表格中设置默认列宽,结果我得到了一个坏文件。这是代码 private void initSpreadsheetDocument() { // Add a WorkbookPart to the spreadsheet document. WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart(); workbookpart.Workbook = new Wo

我试图使用OpenXML框架在Excel电子表格中设置默认列宽,结果我得到了一个坏文件。这是代码

private void initSpreadsheetDocument()
{
    // Add a WorkbookPart to the spreadsheet document.
    WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart();
    workbookpart.Workbook = new Workbook();

    var sheetData = new SheetData();
    var properties = new SheetFormatProperties { DefaultColumnWidth = 25D };

    Worksheet worksheet = new Worksheet();
    worksheet.AppendChild(sheetData);
    
    // here is line of code that corrupt file
    // without it - file is being generated properly
    worksheet.AppendChild(properties);

    // Add a WorksheetPart to the WorkbookPart.
    WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
    worksheetPart.Worksheet = worksheet;

    // Init sheets
    sheetsStorage = new Sheets();

    defaultSheet = new Sheet();
    defaultSheet.Id = spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart);
    defaultSheet.SheetId = 1;
    defaultSheet.Name = DEFAULT_SHEET_NAME;

    sheetsStorage.AppendChild(defaultSheet);

    spreadsheetDocument.WorkbookPart.Workbook.AppendChild(sheetsStorage);
    spreadsheetDocument.WorkbookPart.Workbook.Save();
}
private void initSpreadsheetDocument()
{
//将WorkbookPart添加到电子表格文档中。
WorkbookPart WorkbookPart=电子表格文档.AddWorkbookPart();
workbookpart.工作簿=新工作簿();
var sheetData=新的sheetData();
var properties=newsheetformatproperties{DefaultColumnWidth=25D};
工作表=新工作表();
工作表.AppendChild(sheetData);
//下面是损坏文件的一行代码
//如果没有它,文件将正确生成
工作表.AppendChild(属性);
//将工作表部件添加到工作簿部件。
WorksheetPart WorksheetPart=workbookpart.AddNewPart();
工作表部分工作表=工作表;
//初始表
板材存储=新板材();
defaultSheet=新工作表();
defaultSheet.Id=电子表格文档.WorkbookPart.GetIdOfPart(工作表部件);
defaultSheet.SheetId=1;
defaultSheet.Name=默认的工作表名称;
sheetsStorage.AppendChild(默认页);
电子表格文档.工作簿部件.工作簿.附件子项(表格存储);
spreadsheetDocument.WorkbookPart.Workbook.Save();
}

我试图使用“Append”和“AppendChild”,但结果是一样的

有人对如何解决这个问题有什么看法吗


好的。原因是SheetFormatProperties对象具有必需的属性defaultRowHeight。您甚至可以指定defaultRowHeight=0,但它必须显示。所以使用

SheetFormatProperties sheetFormatProperties1 = new SheetFormatProperties(){ DefaultColumnWidth = 12.75D, DefaultRowHeight = 0D};

快乐=)СаааУааааааа

我无法检查我的建议,但尝试使用工作表.Append(properties);然后是工作表。追加(sheetData)。按照这个顺序。我刚刚检查了这个解决方案-应用属性的顺序并不重要。无论如何,谢谢你的回复谢谢你的时间-这正是我要找的!Героям Слава!我不知道这个问题是关于什么的。Героям слава!