2014-11-12 2 views
4

Я создаю сценарий для экспорта документа как excel. Я нашел некоторые трудности в том, что нравится: Я хочу значение ячейки как «Имя: Mark DOB: 11-11-2014« путем слияния нескольких ячеек. Не могли бы вы помочь мне решить эту проблему?Как создать ячейку с несколькими стилями в excell с помощью HSSFSheet Apache POI?

Спасибо заранее!

+0

Вы можете добавить больше информации и кода таким образом, чтобы ее легче решить твоя проблема. Я предложил другую библиотеку, ниже которой я нашел очень простой в использовании. – vatsal

ответ

0

Вы пытались использовать JXLS?

С помощью шаблонов xls вы можете читать и записывать данные из Excel. Его очень просто использовать.

8

Что вам нужно сделать, это создать RichTextString для вашей камеры. Это способ применения различных форматирования/стилей для разных частей одной и той же ячейки для отображения в Excel

Вы хотите просмотреть POI "Working With Rich Text" example для более о том, как использовать его, но в целом это будет что-то вроде

Cell cell = row.createCell(1); 
    RichTextString rt = new XSSFRichTextString("The quick brown fox"); 

    Font font1 = wb.createFont(); 
    font1.setBoldWeight(Font.BOLDWEIGHT_BOLD); 
    rt.applyFont(0, 10, font1); 

    Font font2 = wb.createFont(); 
    font2.setItalic(true); 
    font2.setUnderline(XSSFFont.U_DOUBLE); 
    rt.applyFont(10, 19, font2); 

    Font font3 = wb.createFont(); 
    font3.setBoldWeight(Font.BOLDWEIGHT_NORMAL); 
    rt.append(" Jumped over the lazy dog", font3); 

    cell.setCellValue(rt); 

это должно дать вам ячейку со смесью полужирный, курсив + подчеркивание и нормальный

+0

что это такое 0,10 и 10,19? –

+0

Посмотрите на связанные javadocs, это смещения в тексте ячейки, который вы хотите, чтобы стиль применялся к – Gagravarr

+0

Вы уверены, что Font.setBold будет работать? Если это не будет 'XSSFFont font1 = (XSSFFont) wb.createFont(); font1.setBold (true); 'или' font1.setBoldweight (Font.BOLDWEIGHT_BOLD); '? –

6

Я создал короткий полный пример для этого.

import org.apache.poi.hssf.usermodel.*; 
import org.apache.poi.xssf.usermodel.*; 
import org.apache.poi.ss.usermodel.*; 
import org.apache.poi.ss.util.*; 

import java.io.FileOutputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 


class RichTextTest { 

public static void main(String[] args) { 
    Workbook wb = new XSSFWorkbook(); 
    Sheet sheet = wb.createSheet("Sheet1"); 

    Row row = sheet.createRow(0); 

    Cell cell = row.createCell(0); 

    RichTextString richString = new XSSFRichTextString("Name: Mark DOB: 11-11-2014"); 
                //^0 ^4  ^11^14 
    Font fontBold = wb.createFont(); 
    //fontBold.setBoldweight(Font.BOLDWEIGHT_BOLD); 
    fontBold.setBold(true); 

    richString.applyFont(0, 4, fontBold); 
    richString.applyFont(11, 14, fontBold); 
    cell.setCellValue(richString); 


    try { 
    FileOutputStream fileOut = new FileOutputStream("workbook.xlsx"); 
    wb.write(fileOut); 
    fileOut.flush(); 
    fileOut.close(); 
    } catch (FileNotFoundException fnfex) { 
    } catch (IOException ioex) { 
    } 

} 
} 

Для дальнейшего ознакомления см. Документацию.

Как создать рабочую книгу, листы и ячейки: http://poi.apache.org/spreadsheet/quick-guide.html#CreateCells

Как использовать Richtext: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFRichTextString.html

Интерфейс шрифта: https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Font.html