1
我有使用OpenXML生成Excel文档的部分代码。 问题是设置自定义列的宽度。这个问题经常在SO上讨论 ,但不幸的是没有任何帮助。OpenXML sdk 2.5 Excel新专栏问题
所以在这里创建文件的代码:
SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(stream
, SpreadsheetDocumentType.Workbook);
WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart();
workbookpart.Workbook = new Workbook();
WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
worksheetPart.Worksheet = new Worksheet(new SheetData());
Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.
AppendChild<Sheets>(new Sheets());
Sheet sheet = new Sheet()
{
Id = spreadsheetDocument.WorkbookPart.
GetIdOfPart(worksheetPart),
SheetId = 1,
Name = _sheetName
};
sheets.Append(sheet);
document = spreadsheetDocument;
wbPart = workbookpart
创造我想要的自定义列的宽度设置为第一列后
Worksheet ws = ((WorksheetPart)(wbPart.GetPartById(sheet.Id))).Worksheet;
Columns columns = new Columns();
Column column = new Column() { Min = (UInt32Value)5U, Max = (UInt32Value)5U,
Width = 16D, CustomWidth = true };
columns.Append(column);
ws.Append(columns);
ws.Save();
代码运行没有任何异常,但结果文件破 这里是结构opf结果表xml
<?xml version="1.0" encoding="UTF-8"?>
-<x:worksheet xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
-<x:sheetData>
-<x:row r="7">
-<x:c r="A7" t="s" s="6">
<x:v>11</x:v>
</x:c>
-<x:c r="B7" t="s" s="6">
<x:v>12</x:v>
</x:c>
-<x:c r="C7" t="s" s="6">
<x:v>13</x:v>
</x:c>
</x:row>
</x:sheetData>
-<x:cols>
<x:col customWidth="1" width="16" max="5" min="5"/>
</x:cols>
</x:worksheet>
所以问题是,我做错了什么?
UPD。问题解决了,感谢petelids。 我只是说:
SheetData sheetData = ws.GetFirstChild<SheetData>();
ws.InsertBefore(columns,sheetData);
然后,只有在这里指定的范围内敏=(UInt32Value)5U,最大值=(UInt32Value)5U
非常感谢@petelids! –