在 Aspose-Cells 的一个单元格中应用多种样式
Apply multiple styles in one cell in Aspose-Cells
我想在一个单元格中添加多种样式。
EX: 我 想要 一些帮助
现在我一次都没有全文。我一次只有一个块(例如,"I"、"Want"、"Some"、"Help" 和相关样式)。但是我需要在一个单元格中设置格式化的整个字符串。
如何使用 Aspose.cells 和 Java 做到这一点?
您可以获取所选字符的FontSetting对象,然后更改样式。 Aspose 文档中的文章参考是 http://goo.gl/GhtDDy
编辑
API 中的 setValue() 方法将设置完整的值。在您的情况下,您有具有关联样式的块。理想情况下,应该有类似 appendValue(String, Style) 的方法,但 Aspose.Cells 库中不存在这样的方法。请在 Aspose forums.
请求此功能
检查下面的方法,你可以有有限的风格,只有在你的场景中应用的字体设置,与当前 API。
我假设您有一个字符串数组列表(值块)和一个样式数组列表(每个块的关联样式)。分隔符可以是 space.
public static void main(String[] args) throws Exception
{
// Instantiating a Workbook object
Workbook workbook = new Workbook();
// Accessing the added worksheet in the Excel file
Worksheet worksheet = workbook.getWorksheets().get(0);
Cells cells = worksheet.getCells();
ArrayList<String> values = new ArrayList<String>();
ArrayList<Style> styles = new ArrayList<Style>();
// Separator character
String separator = " ";
// I
values.add("I");
styles.add(new Style()); styles.get(0).getFont().setBold(true);
// Want
values.add("Want");
styles.add(new Style()); styles.get(1).getFont().setBold(false);
// Some
values.add("Some");
styles.add(new Style()); styles.get(2).getFont().setBold(true);
// Help
values.add("Help");
styles.add(new Style()); styles.get(3).getFont().setBold(false);
// Get cell A1
Cell cell = cells.get("A1");
appendValuesWithStyles(cell, values, styles, separator);
workbook.save(Common.DATA_DIR + "cellstyle.xlsx");
}
private static void appendValuesWithStyles(Cell cell, ArrayList<String> values, ArrayList<Style> styles, String separator)
{
// Lets combine all chunks, because we can only use setValue()
String allCharacters = "";
// First set the whole value in cell
int iValue = 0;
for (String value : values)
{
allCharacters = allCharacters + value;
if (iValue < values.size())
allCharacters = allCharacters + separator;
iValue++;
}
// Set the value once
cell.setValue(allCharacters);
// Now set the styles
int startIndex = 0, valueLength = 0;
for (int iStyle = 0 ; iStyle < styles.size() ; iStyle++)
{
// Get the associated value and the style.
String value = values.get(iStyle);
Style style = styles.get(iStyle);
// We need the start character and length of string to set the style
valueLength = value.length();
cell.characters(startIndex, valueLength).getFont().setBold(style.getFont().isBold());
// Increment the start index
startIndex = startIndex + valueLength + separator.length();
}
}
我想在一个单元格中添加多种样式。
EX: 我 想要 一些帮助
现在我一次都没有全文。我一次只有一个块(例如,"I"、"Want"、"Some"、"Help" 和相关样式)。但是我需要在一个单元格中设置格式化的整个字符串。
如何使用 Aspose.cells 和 Java 做到这一点?
您可以获取所选字符的FontSetting对象,然后更改样式。 Aspose 文档中的文章参考是 http://goo.gl/GhtDDy
编辑 API 中的 setValue() 方法将设置完整的值。在您的情况下,您有具有关联样式的块。理想情况下,应该有类似 appendValue(String, Style) 的方法,但 Aspose.Cells 库中不存在这样的方法。请在 Aspose forums.
请求此功能检查下面的方法,你可以有有限的风格,只有在你的场景中应用的字体设置,与当前 API。
我假设您有一个字符串数组列表(值块)和一个样式数组列表(每个块的关联样式)。分隔符可以是 space.
public static void main(String[] args) throws Exception
{
// Instantiating a Workbook object
Workbook workbook = new Workbook();
// Accessing the added worksheet in the Excel file
Worksheet worksheet = workbook.getWorksheets().get(0);
Cells cells = worksheet.getCells();
ArrayList<String> values = new ArrayList<String>();
ArrayList<Style> styles = new ArrayList<Style>();
// Separator character
String separator = " ";
// I
values.add("I");
styles.add(new Style()); styles.get(0).getFont().setBold(true);
// Want
values.add("Want");
styles.add(new Style()); styles.get(1).getFont().setBold(false);
// Some
values.add("Some");
styles.add(new Style()); styles.get(2).getFont().setBold(true);
// Help
values.add("Help");
styles.add(new Style()); styles.get(3).getFont().setBold(false);
// Get cell A1
Cell cell = cells.get("A1");
appendValuesWithStyles(cell, values, styles, separator);
workbook.save(Common.DATA_DIR + "cellstyle.xlsx");
}
private static void appendValuesWithStyles(Cell cell, ArrayList<String> values, ArrayList<Style> styles, String separator)
{
// Lets combine all chunks, because we can only use setValue()
String allCharacters = "";
// First set the whole value in cell
int iValue = 0;
for (String value : values)
{
allCharacters = allCharacters + value;
if (iValue < values.size())
allCharacters = allCharacters + separator;
iValue++;
}
// Set the value once
cell.setValue(allCharacters);
// Now set the styles
int startIndex = 0, valueLength = 0;
for (int iStyle = 0 ; iStyle < styles.size() ; iStyle++)
{
// Get the associated value and the style.
String value = values.get(iStyle);
Style style = styles.get(iStyle);
// We need the start character and length of string to set the style
valueLength = value.length();
cell.characters(startIndex, valueLength).getFont().setBold(style.getFont().isBold());
// Increment the start index
startIndex = startIndex + valueLength + separator.length();
}
}