2015-01-18 7 views
1

Я хочу добавить несколько стилей в одну ячейку.Применить несколько стилей в одной ячейке в ячейках-объектах

EX: ЯХотитеНекоторые Помощь

Теперь я не имею полный текст в то время. У меня только кусок за раз (например, «Я», «Хочешь», «Некоторые», «Справка» и связанный стиль). Но мне нужно установить всю строку, отформатированную в одной ячейке.

Как это сделать с помощью Aspose.cells и Java?

ответ

1

Вы можете получить объект FontSetting для выбранных символов, а затем изменить стиль. Статья Справка из Aspose документации http://goo.gl/GhtDDy

EDIT метод SetValue() в API установит полную стоимость. В вашем случае у вас есть куски со связанными стилями. В идеале должен быть такой метод, как appendValue (String, Style), но такой метод не существует в библиотеке Aspose.Cells. Пожалуйста, запросите эту функцию в Aspose forums.

Проверьте метод ниже, вы можете иметь ограниченный стиль, только настройки шрифта, применяемые в вашем сценарии, с текущим API.

Я предполагаю, что у вас есть список массивов строк (кусков значений) и список стилей массива (связанные стили для каждого фрагмента). Символом разделителя может быть пробел.

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(); 
    } 
} 
+0

Как я уже говорил, я не могу получить полный текст за раз. Я получаю только кусок. Поэтому было бы здорово, если бы я мог ** добавить ** строку (Cause setValue заменить предыдущее значение) с помощью применяемой таблицы стилей. – Mahfuz

+0

Я отредактировал ответ, посмотрим, можете ли вы каким-то образом использовать решение. С текущим API Aspose.Cells это только обходной путь. –

 Смежные вопросы

  • Нет связанных вопросов^_^