2017-02-05 3 views
1

Недавно я встретил вопрос: Мне нужно экспортировать Excel (XLSX) с Java, который должен содержать этот вид стиля ячейки:Как создать вертикальный сотовый стиль с Apache POI?

enter image description here

Я сделал Excel файл с этим вертикальным текстом, и экспортируется как xml-файл. Потом я обнаружил, что стиль имеет атрибут с именем 'VerticalText':

enter image description here

По опыту я выбрал Apache POI. Но я не мог найти способ генерировать стиль ячейки с помощью POI. Я мог найти только метод rotate, который не мог удовлетворить это требование.

Таким образом, я прочитал больше кода POI и обнаружил, что клеточные стили строятся из некоторого файла xsb, который также не содержит вертикального текста.

Любая помощь очень ценится.

ответ

1

XML на картинке - Excel 2003 SpreadsheetML. Но файл *.xlsx представляет собой ZIP-архив, содержащий файлы Office Open XML. В этом ZIP-архив styles.xml содержит:

... 
<cellXfs count="2"> 
... 
<xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"> 
    <alignment textRotation="255"/> 
</xf> 
</cellXfs> 
... 

Там <alignment textRotation="255"/> для вертикального текста.

Это можно установить с помощью apache poi как так:

import java.io.FileOutputStream; 

import org.apache.poi.ss.usermodel.*; 
import org.apache.poi.xssf.usermodel.XSSFWorkbook; 


public class CreateXSSFVerticalText { 

public static void main(String[] args) throws Exception { 
    Workbook workbook = new XSSFWorkbook(); 

    CellStyle cellStyle = workbook.createCellStyle(); 
    cellStyle.setRotation((short)255); 

    Sheet sheet = workbook.createSheet(); 
    Row row = sheet.createRow(0); 
    Cell cell = row.createCell(0); 
    cell.setCellValue("test"); 
    cell.setCellStyle(cellStyle); 


    FileOutputStream fileOut = new FileOutputStream("CreateXSSFVerticalText.xlsx"); 
    workbook.write(fileOut); 
    fileOut.close(); 
    workbook.close(); 
} 
} 

Поскольку форматы Office Open XML (например, *.xlsx) являются ZIP архивы, содержащие XML-файлы, которые довольно легко определить необходимые атрибуты XML. Просто создайте простой файл *.xlsx, имеющий необходимое форматирование, используя графический интерфейс Excel. Затем разархивируйте файл *.xlsx и посмотрите на xl/styles.xml.

+0

спасибо очень много. –

+0

Я попробовал setRotation (90) раньше, но не отвечал требованиям. почему 255? Удивительно! –

+0

См. Мое дополнение о том, как определить необходимые атрибуты XML. –

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