如何解决使用 openxml 在新的 excel 文档中禁用网格线
我无法为我在内存中创建的新 Excel 文档禁用网格线。
using(var stream = new MemoryStream())
using (var spreadsheetDocument = SpreadsheetDocument.Create(stream,DocumentFormat.OpenXml.SpreadsheetDocumentType.Workbook))
{
var sheetName = "some name";
var workbookPart = spreadsheetDocument.CreateSpreadsheetWorkbook(sheetName);
var sheet = workbookPart.Workbook.Descendants<Sheet>().FirstOrDefault(x => x.Name == sheetName);
var worksheetPart = (WorksheetPart)workbookPart.GetPartById(sheet.Id);
var sheetData = worksheetPart.Worksheet.Elements<SheetData>().First();
worksheetPart.RemoveGridlines();
worksheetPart.Worksheet.Save();
workbookPart.Workbook.Save();
spreadsheetDocument.Close();
stream.Position = 0;
return stream.ToArray();
}
public static class ExcelHelper
{
public static WorkbookPart CreateSpreadsheetWorkbook(this SpreadsheetDocument spreadsheetDocument,params string[] sheetNames)
{
// Add a WorkbookPart to the document.
WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart();
workbookpart.Workbook = new Workbook(new BookViews(new WorkbookView()));
// Add a WorksheetPart to the WorkbookPart.
WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
worksheetPart.Worksheet = new Worksheet(new SheetData());
// Add Sheets to the Workbook.
Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.
AppendChild(new Sheets());
foreach(var sheetName in sheetNames)
{
// Append a new worksheet and associate it with the workbook.
sheets.Append(new Sheet()
{
Id = spreadsheetDocument.WorkbookPart.
GetIdOfPart(worksheetPart),SheetId = (uint)Array.IndexOf(sheetNames,sheetName) + 1,// assume all sheet names are unique,zero id cause file corruption
Name = sheetName
});
}
return workbookpart;
}
public static void RemoveGridlines(this WorksheetPart worksheetPart)
{
var sheetViews = new SheetViews();
SheetView sheetView = new SheetView() {
ShowGridLines = false,WorkbookViewId = 0U
};
sheetViews.Append(sheetView);
worksheetPart.Worksheet = new Worksheet(sheetViews);
}
}
<repairedParts><repairedPart>Repaired Part: /xl/worksheets/sheet1.xml part with XML error. Catastrophic failure Line 1,column 214.</repairedPart></repairedParts>
没有 RemoveGridlines()
调用一切正常。我用过这个 topic,但它对我没有帮助。 Microsoft 文档没有为此提供任何有用的信息。有什么解决办法吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。