我正在尝试更改Excel文件中所有命名范围的格式,但出现错误:“无法设置字体类的name属性”。 抱歉,如果有人问到我,但是我找不到任何东西。
这是我的代码。我确定我只是想念一些东西。
谢谢!
Excel.Application xlsx = new Excel.Application();
Excel.Workbook wb = xlsx.Workbooks.Open(filepath, ReadOnly: false, Editable: true);
foreach (Excel.Name NamedRange in wb.Names)
{
//MessageBox.Show(NamedRange.Name.ToString());
NamedRange.RefersToRange.Cells.Font.Name = "Arial";
}
xlsx.Application.ActiveWorkbook.Save();
xlsx.Application.Quit();
xlsx.Quit();
答案 0 :(得分:0)
当您看到类似于该错误的任何错误时,则可能表明该单元格,工作表或工作簿本身已受到保护。尝试手动选择范围(在Excel中,而不是C#中)并更改字体。我的猜测是您会遇到类似的错误。
有一些方法可以取消C#中的保护,但是在走那条路之前,请评估用例并查看是否对您要执行的操作有意义。
或者,在执行命令之前检查范围是否受到保护。与此类似的东西应该起作用。
SELECT userId, status FROM tbltransaction tbl1
INNER JOIN
(
SELECT userId, max(id) as max_id
FROM tbltransaction
GROUP BY userId
) tbl2
ON tbl1.userId = tbl2.userId
AND tbl1.id = tbl2.max_id;
另一方面,Excel具有很弱的保护(通过设计),有多种方法可以破解保护。这是一个示例: