Pau*_*lor 2 java excel openoffice.org apache-poi
我正在使用 Jakarta Poi 从 Java 创建一个 .xlsx 文件,该文件可以在 Excel/Office 中打开。某些单元格表示多个值,并且最初是空分隔的,例如“fred/u000/tom”,当我在单元格中设置时,我将空字符替换为“\n”
这一切都适用于 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);
}
Run Code Online (Sandbox Code Playgroud)
这是不是从你的代码你在做什么错清楚,但在我的评论说, setWrapText 需要在被设置为true CellStyle为此应具有的换行单元格。
例子:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
| 归档时间: |
|
| 查看次数: |
1050 次 |
| 最近记录: |