使用Apache Poi,我如何创build多值电子表格单元格,以便在MS Excel中正确显示,而不仅仅是OpenOffice
我正在使用Jakarta Poi从Java创build一个可以在Excel / Office中打开的.xlsx文件。 其中一些单元格代表多个值,最初为null,例如当我在单元格中设置'fred / u000 / tom'时,我用'\ n'replace空字符
这一切都适用于OpenOffice,它提高了这些行的高度,以适应多行。 但是我发现OpenOffice以xlsx格式和xls格式打开文件需要更长的时间,所以我投资了Microsoft Excel,并在同一行中显示了所有值。
如果你去编辑一个值然后Excel增加高度来容纳多个值,但为什么不读它。
由于没有必要编辑电子表格,还有其他的东西可以用来代替'\ n'或者一些选项来强制Excel显示OpenOffice这样的文件
代码提取
private void addFieldValue(Session session, Worksheet sheet, Row r, int spreadsheetIndex, SongFieldNameColumnWidth sfncw, SongChanges fieldChanges, Song song) { SongFieldName songFieldName = sfncw.getSongFieldName(); String value = ""; org.apache.poi.ss.usermodel.Cell c ; c=r.createCell(spreadsheetIndex); //Chnanges have been made to this field if(fieldChanges!=null) { if (changeType == SongChangeType.ADD) { value = fieldChanges.getNewValue().replace('\u0000', '\n'); c.setCellValue(value); c.setCellStyle(fieldAddedStyle); } else if (changeType == SongChangeType.EDIT) { value = fieldChanges.getNewValue().replace('\u0000', '\n'); c.setCellValue(value); c.setCellStyle(fieldChangedStyle); //addCellComment(r, c, sheet, fieldChanges.getOriginalValue()); } else if (changeType == SongChangeType.DELETE) { c.setCellStyle(fieldDeletedStyle); } } sfncw.setColumnWidthFromValue(value); }
从你的代码中不清楚你做错了什么,但正如在我的评论中所说的, setWrapText需要在CellStyle中设置为true,以便有行换行的单元格。
例:
import java.io.FileOutputStream; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class CreateExcelCellWrapText { public static void main(String[] args) throws Exception { XSSFWorkbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet(); Row row = sheet.createRow(0); CellStyle cellstyle = workbook.createCellStyle(); cellstyle.setWrapText(true); Cell cell = row.createCell(0); cell.setCellValue("String cell content\nhaving line wrap."); cell.setCellStyle(cellstyle); sheet.autoSizeColumn(0); workbook.write(new FileOutputStream("CreateExcelCellWrapText.xlsx")); workbook.close(); } }
结果:
- POI – SXSSFWorkbook – Excel发现不可读的内容
- 如何使用Apache POI将一个Excel表格存储到一个双string数组中?
- 从Apache POI 3.2中读取Excel(XLS)数据中的不同格式
- POI:意外的loggingtypesorg.apache.poi.hssf.record.HyperlinkRecord
- 如何从Java中的Apache POI库调用macros?
- 使用Apache POI在MS Excel中识别项目符号点
- 在java中通过多张excel迭代
- 本工作簿中检测到一个或多个无效名称。 这些无效名称已被更改为#REF
- POI Java Excel解决scheme – 缩进值