0
Apache POIで固定列幅を設定する方法。 最初の列を固定幅にしたい。Apache POIで固定列幅を設定する方法
私はsheet.setColumnWidth(0、1000)で試しました。 cellStyle.setWrapText(true); //セット...それが動作するはず
public XSSFWorkbook generateReport(List<Dto> result, boolean isRes, boolean isRes1) {
XSSFWorkbook workbook = null;
XSSFSheet sheet = null;
XSSFRow row = null;
XSSFCell cell = null;
String[] headers = null;
int rowNum = 0;
int colNum = 0;
CellStyle cellStyle = null;
CellStyle headerStyle = null;
XSSFFont font = null;
CellStyle datecellStyle = null;
/* set the weight of the font */
try {
workbook = new XSSFWorkbook();
headers = new String[] { ...values goes here...};
row = sheet.createRow(rowNum);
font = workbook.createFont();
font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);
headerStyle = workbook.createCellStyle();
headerStyle.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM);
headerStyle.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);
headerStyle.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);
headerStyle.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);
headerStyle.setFillForegroundColor((short) 200);
headerStyle.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);
headerStyle.setFont(font);
cellStyle = workbook.createCellStyle();
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
datecellStyle = workbook.createCellStyle();
datecellStyle.setDataFormat(workbook.getCreationHelper().createDataFormat().getFormat("dd-MMM-yyyy"));
datecellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
datecellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
datecellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
datecellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
/**
* Writing Headers
*/
for (String header : headers) {
cell = row.createCell(colNum);
cell.setCellValue(header);
cell.setCellStyle(headerStyle);
++colNum;
}
/**
* Writing Other Rows
*/
SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss");
for (Dto detail : result) {
++rowNum;
colNum = 0;
row = sheet.createRow(rowNum);
cell = row.createCell(colNum);
//sheet.setColumnWidth(0, 4000);
cell.
if(null != detail.getGid()){
cell.setCellValue(detail.getGid());
}else{
cell.setCellValue("-");
}
cell.setCellStyle(cellStyle);
++colNum;
cell = row.createCell(colNum);
if(null != detail.getName()){
cell.setCellValue(detail.getName());
}else{
cell.setCellValue("-");
}
cell.setCellStyle(cellStyle);
++colNum;
cell = row.createCell(colNum);
if(null != detail.getNGid()){
cell.setCellValue(detail.getNGid());
}else{
cell.setCellValue("-");
}
cell.setCellStyle(cellStyle);
++colNum;
cell = row.createCell(colNum);
if(null != detail.getName()){
cell.setCellValue(detail.getName());
}else{
cell.setCellValue("-");
}
cell.setCellStyle(cellStyle);
}
for (int i = 0; i < headers.length; i++) {
sheet.autoSizeColumn(i);
}
sheet.createFreezePane(1, 1);
} catch (Exception e) {
e.printStackTrace();
}
return workbook;
}
したがって、列0の幅を自動サイズ設定することは望ましくありませんか?したがって、 'sheet.autoSizeColumn(i);'から 'i == 0'を単純に除外します。 –
それは働く..ありがとう、アレックス –