C# 如何通过openxml和c获取列宽#

C# 如何通过openxml和c获取列宽#,c#,openxml,C#,Openxml,我的任务是解析excel文件并将其转换为web表。 为了实现这个目标,我需要列号、每列的宽度、行号以及行中的每个单元格和单元格属性 到目前为止,我可以得到行、单元格、单元格属性,如边框、字体等。但是我不能得到列宽 当我打开excel文件并通过以下代码获取列时 Columns columns = sheet.Descendants<Columns>().FirstOrDefault() 如果打开一个空的excel文件并且不更改列宽,则保存它。代码不在那里 所以我的问题是如何获得列宽?

我的任务是解析excel文件并将其转换为web表。 为了实现这个目标,我需要列号、每列的宽度、行号以及行中的每个单元格和单元格属性

到目前为止,我可以得到行、单元格、单元格属性,如边框、字体等。但是我不能得到列宽

当我打开excel文件并通过以下代码获取列时

Columns columns = sheet.Descendants<Columns>().FirstOrDefault()
如果打开一个空的excel文件并且不更改列宽,则保存它。代码不在那里


所以我的问题是如何获得列宽?

列宽可以是默认宽度,也可以是自定义宽度。如您所述,可以从中读取自定义宽度。如果设置了默认列宽,则可以从中读取。但是,如果
DefaultColumnWidth
属性设置为null

要获取
DefaultColumnWidth

using (SpreadsheetDocument spreadSheetDocument = SpreadsheetDocument.Open(filePath, true))
{
    WorkbookPart workbookPart = spreadSheetDocument.WorkbookPart;
    IEnumerable<Sheet> sheets = spreadSheetDocument.WorkbookPart.Workbook.GetFirstChild<Sheets>().Elements<Sheet>();
    string relationshipId = sheets.First().Id.Value;
    WorksheetPart worksheetPart = (WorksheetPart)spreadSheetDocument.WorkbookPart.GetPartById(relationshipId);
    Worksheet workSheet = worksheetPart.Worksheet;

    var sheetFormatProps = workSheet.SheetFormatProperties;
    var defaultColWidth = sheetFormatProps.DefaultColumnWidth;
    if (defaultColWidth == null)
    {
        defaultColWidth = 8.43;
    }
}
使用(SpreadsheetDocument SpreadsheetDocument=SpreadsheetDocument.Open(文件路径,true))
{
WorkbookPart WorkbookPart=电子表格文档.WorkbookPart;
IEnumerable sheets=spreadSheetDocument.WorkbookPart.Workbook.GetFirstChild().Elements();
string relationshipId=sheets.First().Id.Value;
工作表部件工作表部件=(工作表部件)电子表格文档.WorkbookPart.GetPartById(relationshipId);
工作表=工作表零件工作表;
var sheetFormatProps=workSheet.SheetFormatProperties;
var defaultColWidth=sheetFormatProps.DefaultColumnWidth;
如果(defaultColWidth==null)
{
defaultColWidth=8.43;
}
}

列宽可以是默认宽度,也可以是自定义宽度。如您所述,可以从中读取自定义宽度。如果设置了默认列宽,则可以从中读取。但是,如果
DefaultColumnWidth
属性设置为null

要获取
DefaultColumnWidth

using (SpreadsheetDocument spreadSheetDocument = SpreadsheetDocument.Open(filePath, true))
{
    WorkbookPart workbookPart = spreadSheetDocument.WorkbookPart;
    IEnumerable<Sheet> sheets = spreadSheetDocument.WorkbookPart.Workbook.GetFirstChild<Sheets>().Elements<Sheet>();
    string relationshipId = sheets.First().Id.Value;
    WorksheetPart worksheetPart = (WorksheetPart)spreadSheetDocument.WorkbookPart.GetPartById(relationshipId);
    Worksheet workSheet = worksheetPart.Worksheet;

    var sheetFormatProps = workSheet.SheetFormatProperties;
    var defaultColWidth = sheetFormatProps.DefaultColumnWidth;
    if (defaultColWidth == null)
    {
        defaultColWidth = 8.43;
    }
}
使用(SpreadsheetDocument SpreadsheetDocument=SpreadsheetDocument.Open(文件路径,true))
{
WorkbookPart WorkbookPart=电子表格文档.WorkbookPart;
IEnumerable sheets=spreadSheetDocument.WorkbookPart.Workbook.GetFirstChild().Elements();
string relationshipId=sheets.First().Id.Value;
工作表部件工作表部件=(工作表部件)电子表格文档.WorkbookPart.GetPartById(relationshipId);
工作表=工作表零件工作表;
var sheetFormatProps=workSheet.SheetFormatProperties;
var defaultColWidth=sheetFormatProps.DefaultColumnWidth;
如果(defaultColWidth==null)
{
defaultColWidth=8.43;
}
}

您可以使用Excel interop吗?如果是这样,请看这里:您使用什么技术来解析xml?它看起来像开放式Xml SDK,但我可能错了…@vasil oreshenski,我使用的是开放式Xml SDK,你能使用Excel互操作吗?如果是这样,请看这里:您使用什么技术来解析xml?它看起来像开放式Xml SDK,但我可能错了…@vasil oreshenski,我使用的是开放式Xml SDK