C# 如何使用C和LibreOffice/OpenOffice在电子表格单元格中设置粗体文本?

C# 如何使用C和LibreOffice/OpenOffice在电子表格单元格中设置粗体文本?,c#,libreoffice,openoffice-calc,C#,Libreoffice,Openoffice Calc,我正在将我们的一个内部应用程序转换为使用OpenOffice/LibreOffice以及MsOffice 在带有C/.NET的Excel电子表格中,只将单元格中的部分文本设置为粗体是相当简单的。看起来是这样的: sheet.Range["A1"].Characters[startIndex, length].Font.Bold = true; 如何在OO/LO中实现等效功能?您看过XML文件格式吗? 我不确定是否打开Excel,但在MS Excel中,您可以定义字体并附加它 var font

我正在将我们的一个内部应用程序转换为使用OpenOffice/LibreOffice以及MsOffice

在带有C/.NET的Excel电子表格中,只将单元格中的部分文本设置为粗体是相当简单的。看起来是这样的:

sheet.Range["A1"].Characters[startIndex, length].Font.Bold = true;

如何在OO/LO中实现等效功能?

您看过XML文件格式吗?

我不确定是否打开Excel,但在MS Excel中,您可以定义字体并附加它

var fonts = new Fonts();
            var font = new DocumentFormat.OpenXml.Spreadsheet.Font();
            var fontName = new FontName {Val = StringValue.FromString("Arial")};
            var fontSize = new FontSize {Val = DoubleValue.FromDouble(11)};
            font.FontName = fontName;
            font.FontSize = fontSize;
            fonts.Append(font);
            var cellFormats = new CellFormats();
                     cellFormats.Append(fonts);

我不确定这是否是最有效的方法,但它是有效的。基本思想是使用示例代码将文本插入单元格,然后在所需的子范围上创建光标,并在子范围上设置CharWeight属性

var xCellText = (unoidl.com.sun.star.text.XText)cell;
var xTextCursor = xCellText.createTextCursor();
xCellText.insertString(xTextCursor, newLine, false);
xTextCursor.gotoStart(false);
xTextCursor.goRight((short)boldStartIndex, false);
xTextCursor.goRight((short)boldLength, true);
var xPropSet = (XPropertySet)xTextCursor;
xPropSet.setPropertyValue("CharWeight", new uno.Any(unoidl.com.sun.star.awt.FontWeight.BOLD));

这不是我真正想做的。将格式应用于整个单元格很容易。我想做的是有一个单元格,其中粗体状态在单元格内更改。类似这个词的东西是粗体的。你可以手工操作,我就是不知道怎么编码。