我正在将我们的一个内部应用程序转换为使用OpenOffice/LibreOffice以及MsOffice。如何使用C#和LibreOffice/OpenOffice在电子表格单元格中设置粗体文本?
在使用C#/。NET的Excel spreedsheet中,将一个单元格中的部分文本设置为粗体非常简单。它看起来像这样:
sheet.Range["A1"].Characters[startIndex, length].Font.Bold = true;
你如何做OO/LO中的等价物?
我正在将我们的一个内部应用程序转换为使用OpenOffice/LibreOffice以及MsOffice。如何使用C#和LibreOffice/OpenOffice在电子表格单元格中设置粗体文本?
在使用C#/。NET的Excel spreedsheet中,将一个单元格中的部分文本设置为粗体非常简单。它看起来像这样:
sheet.Range["A1"].Characters[startIndex, length].Font.Bold = true;
你如何做OO/LO中的等价物?
你看看XML文件格式吗? http://www.openoffice.org/xml/xml_specification.pdf
我不确定打开的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));
这不是我真正想做的。将格式应用于整个单元格很容易。我想要做的是让单元格中的粗体状态发生变化。像“这**字**是粗体的。”你可以手动完成,我只是不知道如何编写代码。 – Drury