首页 > 解决方案 > 如何在 OpenXML SpeadsheetDocument 中设置或清除作者

问题描述

在 C#.Net 中使用 OpenXML SpreadsheetDocument 类创建电子表格时,作者和上次保存的字段设置为“James Westgate”。

如何清除或覆盖 James 的名字?

SpreadsheetDocument doc = SpreadsheetDocument.Open(stream, true);

doc.PackageProperties.Creator = "sh";

...不适合我。

道具截图

更新:-

using System;

using System.Windows.Forms;

using System.IO;
using DocumentFormat.OpenXml.Extensions;
using DocumentFormat.OpenXml.Packaging;

using DocumentFormat.OpenXml.Spreadsheet;

namespace OpenXMLProps
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public MemoryStream Execute()
        {
            MemoryStream stream = SpreadsheetReader.Create();
            using (SpreadsheetDocument doc = SpreadsheetDocument.Open(stream, true))
            {
                WorksheetPart worksheetPart = SpreadsheetReader.GetWorksheetPartByName(doc, "Sheet1");
                WorksheetWriter writer = new WorksheetWriter(doc, worksheetPart);

                doc.PackageProperties.Creator = "Finbar mahoolahan";

                SpreadsheetWriter.Save(doc);

                return new MemoryStream(stream.ToArray());
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            using (FileStream fs = new FileStream("excel_test.xlsx", FileMode.Create, FileAccess.Write))
            {
                MemoryStream excel_stream = Execute();
                excel_stream.WriteTo(fs);
            }
        }
    }
}

标签: c#openxml

解决方案


我相信(不看现在可能已经有 8 年历史的代码)有一个基本文档构成了模板,这可能与我的名字相关联。这是作为资源嵌入到 dll 中的。

我建议尝试从 CodePlex 下载原始SimpleOOXml源代码并尝试修改文档。您也可以针对现代版本的 OpenXML 库重新编译。


推荐阅读