C# 如何创建可编辑的excel
我正在创建Excel文件:C# 如何创建可编辑的excel,c#,excel,openxml,closedxml,C#,Excel,Openxml,Closedxml,我正在创建Excel文件: SpreadsheetDocument document = SpreadsheetDocument.Create(filename, SpreadsheetDocumentType.Workbook) WorkbookPart workBookPart = document.AddWorkbookPart(); workBookPart.Workbook = new Workbook(); WorksheetPart
SpreadsheetDocument document = SpreadsheetDocument.Create(filename, SpreadsheetDocumentType.Workbook)
WorkbookPart workBookPart = document.AddWorkbookPart();
workBookPart.Workbook = new Workbook();
WorksheetPart workSheetPart = workBookPart.AddNewPart<WorksheetPart>();
workSheetPart.Worksheet = new Worksheet();
Sheets sheets = workBookPart.Workbook.AppendChild(new Sheets());
Sheet sheet = new Sheet()
{
Id = workBookPart.GetIdOfPart(workSheetPart),
SheetId = 1,
Name = "Test Sheet"
};
sheets.Append(sheet);
workBookPart.Workbook.Save();
SpreadsheetDocument文档=SpreadsheetDocument.Create(文件名,SpreadsheetDocumentType.工作簿)
WorkbookPart WorkbookPart=document.AddWorkbookPart();
workBookPart.工作簿=新工作簿();
WorksheetPart WorksheetPart=workBookPart.AddNewPart();
工作表部分。工作表=新工作表();
Sheets Sheets=workBookPart.工作簿.AppendChild(新工作表());
图纸=新图纸()
{
Id=workBookPart.GetIdOfPart(工作表部分),
SheetId=1,
Name=“测试表”
};
附页(页);
workBookPart.Workbook.Save();
当我打开文件时,它是只读的,我如何使它对用户可编辑
ClosedXML是优先考虑的,解决方案的另一种方法是OpenXML。您在这里提供的代码创建了一个无效文件,而不是只读文件。有两个小问题。首先,每个
工作表下必须只有一个元素,其次,您需要调用文档上的方法(直接或通过using语句间接调用)
以下代码将创建一个可编辑的文件,通过显式调用Close
SpreadsheetDocument document = SpreadsheetDocument.Create(filename, SpreadsheetDocumentType.Workbook);
WorkbookPart workBookPart = document.AddWorkbookPart();
workBookPart.Workbook = new Workbook();
WorksheetPart workSheetPart = workBookPart.AddNewPart<WorksheetPart>();
workSheetPart.Worksheet = new Worksheet();
//a worksheet *must* have exactly one child SheetData
workSheetPart.Worksheet.AppendChild(new SheetData());
Sheets sheets = workBookPart.Workbook.AppendChild(new Sheets());
Sheet sheet = new Sheet()
{
Id = workBookPart.GetIdOfPart(workSheetPart),
SheetId = 1,
Name = "Test Sheet"
};
sheets.Append(sheet);
workBookPart.Workbook.Save();
//the document must be closed (and ideally disposed)
document.Close();
document.Dispose();
编辑
在ClosedXml中执行此操作要简单得多。以下内容将生成等效工作簿:
using ClosedXML.Excel;
....
var workbook = new XLWorkbook();
var worksheet = workbook.Worksheets.Add("Test Sheet");
workbook.SaveAs(filename);
关闭VS。当VS仍然打开时,文件是只读的,因为VS应用程序仍然打开它。@jdweng它是关闭的,当我打开文件时,它仍然是只读的。有没有办法用closedxml复制它?您的答案很完美,但是使用closedXML更容易实现excel文件所需的功能,但是在使用closedXML时,我遇到了相同的问题,即文件是只读的。我只是想用closedXML完成整个项目,而不是与OpenXMLHi@Toni混合,我已经更新了答案,以包含closedXML示例。
using ClosedXML.Excel;
....
var workbook = new XLWorkbook();
var worksheet = workbook.Worksheets.Add("Test Sheet");
workbook.SaveAs(filename);