我想在Excel中禁用GridLines并使用C#中的open xml将自定义边框放到excel单元格中
我尝试使用以下代码,但在打开excell时抛出异常, 例外情况是“修复的部分:/xl/worksheets/sheet.xml部分有XML错误。加载错误。第1行,第0列。”
using (SpreadsheetDocument xl = SpreadsheetDocument.Create(sFile, SpreadsheetDocumentType.Workbook))
{
WorkbookPart wbp = xl.AddWorkbookPart();
WorksheetPart wsp = wbp.AddNewPart<WorksheetPart>();
Workbook wb = new Workbook();
FileVersion fv = new FileVersion();
fv.ApplicationName = "Microsoft Office Excel";
Worksheet ws = new Worksheet();
SheetViews sheetViews = new SheetViews();
SheetView sheetView = new SheetView();
sheetView.ShowGridLines = new BooleanValue(false);
sheetViews.Append(sheetView);
ws.Append(sheetViews);
WorkbookStylesPart wbsp = wbp.AddNewPart<WorkbookStylesPart>();
//// add styles to sheet
wbsp.Stylesheet = CreateStylesheet();
wbsp.Stylesheet.Save();
//// add styles to sheet
////wbsp.Stylesheet = GenerateStyleSheet();
//wbsp.Stylesheet.Save();
Columns columns = new Columns();
columns.Append(CreateColumnData(1, 1, 25));
ws.Append(columns);
//// generate rows
SheetData sd = CreateSheetData(products);
ws.Append(sd);
wsp.Worksheet = ws;
wsp.Worksheet.Save();
MERGEiNITIALcELLS(wsp);
wb.Append(fv);
CreateSheet(wbp, wsp, wb);
xl.WorkbookPart.Workbook = wb;
xl.WorkbookPart.Workbook.Save();
xl.Close();
答案 0 :(得分:4)
SheetView类的WorkbookViewId属性是必需的属性/属性。试试这个:
SheetView sheetView = new SheetView();
sheetView.ShowGridLines = new BooleanValue(false);
sheetView.WorkbookViewId = 0;
sheetViews.Append(sheetView);
ws.Append(sheetViews);
使用第一个(默认)工作簿视图。不用担心,您不必显式创建BookViews类的WorkbookView子级,它是Workbook的子级。当然,除非你想要。 :)
答案 1 :(得分:2)
我试过这种方式,但它失败但能够识别缺失的东西。默认情况下,从头开始创建电子表格时,没有默认的工作簿视图。因此需要创建新的工作簿视图。
spreadSheet.WorkbookPart.Workbook = new Workbook(new BookViews(new WorkbookView()));
然后创建工作表视图。
worksheetPart.Worksheet = new Worksheet(new SheetViews(new SheetView(){WorkbookViewId=0,ShowGridLines=new BooleanValue(false)}), new SheetData());
注意:在excel工作簿中创建列时,应按顺序创建元素。序列是
享受Open XML SDK,但Microsoft不提供非常强大的文档。