如何使用open xml C#禁用Excel中的网格线?

3
我想在使用C#的Open XML时,禁用Excel中的网格线并对Excel单元格进行自定义边框。以下是我尝试过的代码,但打开Excel时出现异常,错误信息为“已修复部分:/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();
2个回答

4
SheetView类的WorkbookViewId属性/属性是必需的。尝试这样做:
SheetView sheetView = new SheetView();
sheetView.ShowGridLines = new BooleanValue(false);
sheetView.WorkbookViewId = 0;
sheetViews.Append(sheetView);
ws.Append(sheetViews);

这使用的是第1个(默认)工作簿视图。不用担心,您不必显式创建WorkbookView类的子级BookViews类的子级Workbook。当然,除非您想要。


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工作簿中的列时,应按顺序创建元素。该顺序是:

  • Sheet Views
  • Sheet View Formatting
  • Columns
  • Sheet Data

喜欢使用Open XML SDK,但微软并没有提供非常强大的文档。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接