如何使用C#(Microsoft.Interop.Excel)程序化设置Excel敏感度标签?
在C#中使用Microsoft.Interop.Excel设置Excel敏感度标签
前提准备
- 先在项目中添加两个引用:
Microsoft.Office.Interop.Excel(用于操作Excel对象模型)和Microsoft.Office.Core(用于访问Office通用对象如LabelInfo、MsoAssignmentMethod)
实现代码
using Excel = Microsoft.Office.Interop.Excel; using Office = Microsoft.Office.Core; class ExcelSensitivityLabelHandler { public static void SetSensitivityLabel(string targetSavePath) { Excel.Application excelInstance = null; Excel.Workbook targetWorkbook = null; try { // 初始化Excel应用 excelInstance = new Excel.Application(); excelInstance.Visible = false; // 创建新工作簿 targetWorkbook = excelInstance.Workbooks.Add(); // 获取工作簿的敏感度标签对象 Office.SensitivityLabel sensitivityLabel = targetWorkbook.SensitivityLabel; // 构建标签信息实例 Office.LabelInfo labelInfo = sensitivityLabel.CreateLabelInfo(); labelInfo.AssignmentMethod = Office.MsoAssignmentMethod.msoAssignmentMethodPrivileged; labelInfo.LabelId = "9203368f-916c-4d59-8292-9f1c6a1e8f39"; labelInfo.LabelName = "MyLabelName"; labelInfo.SiteId = "6c15903a-880e-4e17-818a-6cb4f7935615"; // 应用敏感度标签 sensitivityLabel.SetLabel(labelInfo, labelInfo); // 保存工作簿(格式51对应.xlsx) targetWorkbook.SaveAs(targetSavePath, Excel.XlFileFormat.xlOpenXMLWorkbook); // 可选:验证标签设置结果 // Office.LabelInfo retrievedLabel = sensitivityLabel.GetLabel(); // Console.WriteLine($"标签ID:{retrievedLabel.LabelId}"); // Console.WriteLine($"标签名称:{retrievedLabel.LabelName}"); } finally { // 释放COM资源,避免Excel进程后台残留 if (targetWorkbook != null) { targetWorkbook.Close(false); System.Runtime.InteropServices.Marshal.ReleaseComObject(targetWorkbook); } if (excelInstance != null) { excelInstance.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(excelInstance); } } } }
注意事项
- 将
targetSavePath替换为实际的文件保存路径 - 确保开发环境已安装对应版本的Office,且Interop组件版本与Office版本匹配
- 必须执行COM对象释放步骤,否则会导致Excel进程在后台持续运行
内容的提问来源于stack exchange,提问作者solarissf
相关产品推荐
相关产品推荐

