gpt4 book ai didi

excel - 如何获取默认的 Excel 工作表字体?

转载 作者:行者123 更新时间:2023-12-04 20:37:45 30 4
gpt4 key购买 nike

我们在 C# 中有 Excel 2013-2016 插件。我们使用以下方法到get worksheet font :

var defaultFont = Microsoft.Office.Interop.Excel.Worksheet.Cells.Font

一切正常,直到用户更改某些特定单元格的字体。例如,用户更改单元格 A1 并设置字体“Arial”。默认情况下,我们有字体“Calibri”。
此后,当我们尝试通过 Worksheet.Cells.Font 获取默认字体时我们什么也得不到——只是空的对象。我假设由于模棱两可:A1 有字体“Arial”,其他单元格 - 默认字体“Calibri”。我的目标是获得默认字体,即“Calibri”。
到目前为止,我重新编写了我的代码,现在我也检查了 Styles:
var workbookFont = Microsoft.Office.Interop.Excel.Worksheet.Parent.Styles["Normal"].Font;

此解决方法完全返回了我所需要的 - 我的“Calibri”字体。但后来我发现,那是因为这个字体是所有新工作表/工作簿的默认字体(可以在 Excel 的选项中设置)。如果用户选择了工作表中的所有单元格并将默认字体更改为“Times New Roman”,则它不起作用,然后我会得到“Calibri” - 因为这是在创建新工作表/工作簿后将使用的默认字体。当我无法为当前工作表获得真正的默认字体时,我再次遇到了问题。我的下一个想法是在工作表边缘获取某些特定单元格的字体,这对用户来说不太有用,例如:
var defaultFont = workSheet.Cells[1048576][16384].Font

它看起来很奇怪,但它确实有效。我假设用户不使用工作表上的最后一个单元格。 (1048576 和 16384 是 max size of worksheet )。我不知道这些方法的含义,所以我想知道是否存在一些“合法”的方式来获取工作表的默认字体,而不需要这样的拐杖?

最佳答案

使用时您走在正确的道路上:

var workbookFont = Microsoft.Office.Interop.Excel.Worksheet.Parent.Styles["Normal"].Font;
Normal style 是工作表的默认字体,但工作表实际上可能没有任何默认字体(或 Normal 样式)的实例,或者所有用 Normal 装饰的单元格style 可能在每个单元格格式上都覆盖了字体。

如果用户将他们自己的字体应用到不同的范围,那么工作表可能会有很多字体,并且它们都不能保证与 Normal 中的字体相同。风格。 Font.Name在工作表中可能会有所不同,在这种情况下 Font.Name返回 null ,即使 Font.Size可能是一致的(或者如果不是,那么它也返回 null )。

当用户将自定义字体应用于已经具有 Normal 的范围时样式,然后是 Style仍然与范围相关联,并且字体会覆盖样式中定义的任何字体。

此外,在更改 UsedRange 的字体时,通常会选择工作表上的所有单元格。 (以便行高按比例调整),即使 UsedRange只是所有 Cells中的一小部分.

因此,您必须选择代表工作表中使用的字体的字体,或者将字体应用于新范围,就好像它们是 Normal .该选择应根据您对工作表的了解以及您打算对字体执行的操作来决定:
  • 如果您要插入列或行,那么我建议您模仿 Excel 行为并使用相邻格式。
  • 如果您要添加不与 UsedRange 相邻的新范围,那么您可能希望默认为 Normal风格。
  • 如果您正在寻找 UsedRange 的代表字体,您可能希望避免前几行和几列,因为它们往往是标题,而最后一行有时可能是总计。您需要遍历范围内的单元格以找到合适的单元格格式。
  • 如果要以其他格式复制工作表内容,则需要检查 UsedRange 中每个单元格和每个单元格的字体。 .

  • 最右下角的单元格不一定与 Normal 或多或少相似。或 UsedRange 中使用的字体,所以我建议不要使用它。

    关于excel - 如何获取默认的 Excel 工作表字体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39509444/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com