Apache POI Excel-확장 할 열을 구성하는 방법은 무엇입니까?
일부 데이터를 출력 Apache POI API
하기 위해 생성하는 excel spreadsheet
데 사용 하고 있습니다.
내가 직면 한 문제는 스프레드 시트를 만들고 열 때 열이 확장되지 않아 날짜 형식 텍스트와 같은 일부 긴 텍스트가 한 눈에 표시되지 않는다는 것입니다.
Excel에서 열 테두리를 두 번 클릭하여 확장하거나 테두리를 끌어 열 너비를 조정할 수 있지만 20 개 이상의 열이있을 수 있으며 스프레드 시트를 열 때마다 수동으로 수행 할 방법이 없습니다.
나는 (잘못 방법이 될 수 있지만) 발견 groupRow()
과 setColumnGroupCollapsed()
트릭하지만 행운을 할 수 있습니다. 아마도 나는 그것을 잘못된 방식으로 사용하고있을 것입니다.
샘플 코드 스 니펫
Workbook wb = new HSSFWorkbook();
CreationHelper createHelper = wb.getCreationHelper();
//create sheet
Sheet sheet = wb.createSheet("masatoSheet");
//not really working yet.... :(
//set group for expand/collapse
//sheet.groupRow(0, 10); //just random fromRow toRow argument values...
//sheet.setColumnGroupCollapsed(0, true);
//create row
Row row = sheet.createRow((short)0);
//put a cell in the row and store long text data
row.createCell(0).setCellValue("Loooooooong text not to show up first");
이 스프레드 시트가 생성 될 때 "Loooooooo 텍스트가 먼저 표시되지 않음"문자열이 셀에 있지만 열이 확장되지 않았으므로 "Loooooooo"만 표시됩니다.
스프레드 시트를 열 때 열이 이미 확장되도록 구성하려면 어떻게해야합니까 ???
모든 데이터를 시트에 추가 한 후autoSizeColumn(int column)
시트를 호출 하여 열을 적절한 크기에 자동으로 맞출 수 있습니다.
다음은 API에 대한 링크 입니다.
자세한 내용은이 게시물을 참조하십시오. apache poi를 사용할 때 엑셀 셀 크기를 콘텐츠 크기에 맞추는 문제
팁 : 자동 크기를 작동하려면 데이터를 Excel에 채운 후를 호출 sheet.autoSizeColumn(columnNumber)
해야합니다 .
데이터를 채우기 전에 메서드를 호출해도 효과가 없습니다.
통합 문서의 모든 열 크기를 자동으로 조정하려는 경우 유용한 방법은 다음과 같습니다.
public void autoSizeColumns(Workbook workbook) {
int numberOfSheets = workbook.getNumberOfSheets();
for (int i = 0; i < numberOfSheets; i++) {
Sheet sheet = workbook.getSheetAt(i);
if (sheet.getPhysicalNumberOfRows() > 0) {
Row row = sheet.getRow(sheet.getFirstRowNum());
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
int columnIndex = cell.getColumnIndex();
sheet.autoSizeColumn(columnIndex);
}
}
}
}
다음과 같이 시도 할 수 있습니다.
HSSFSheet summarySheet = wb.createSheet();
summarySheet.setColumnWidth(short column, short width);
여기 매개 변수는 다음과 같습니다. 시트의 열 번호와 너비 그러나 너비 단위는 매우 작습니다. 예를 들어 4000을 시도해 볼 수 있습니다.
Excel POI의 경우 :
sheetName.autoSizeColumn(cellnum);
아래 샘플 코드
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("your sheet name");
HSSFRow row = sheet.createRow(0);
cell = row.createCell(0);
cell.setCellValue("A BIG NAME WITH AUTO SIZE FEATURE ENABLED");
// 중요하다
sheet.autoSizeColumn(0);
// 인수는 셀 번호 여야합니다.
cell = row.createCell(1);
cell.setCellValue("a big name without auto size feature enabled");
출력을 확인하고 미치광이 :)
열 수를 알고있는 경우 (컬렉션 목록과 동일 함). 이 하나의 라이너를 사용하여 한 시트의 모든 열을 조정할 수 있습니다 (최소 Java 8을 사용하는 경우).
IntStream.range(0, columnCount).forEach((columnIndex) -> sheet.autoSizeColumn(columnIndex));
매우 간단합니다.이 한 줄 코드를 사용하십시오. dataSheet.autoSizeColumn (0)
또는 괄호 안의 열 수를 제공하십시오 .dataSheet.autoSizeColumn (cell number)
텍스트를 줄 바꿈 할 수도 있습니다. PFB 샘플 코드 :
CellStyle wrapCellStyle = new_workbook.createCellStyle();
wrapCellStyle.setWrapText(true);
setColumnWidth()
셀을 더 확장하고 싶다면 사용할 수 있습니다 .
참고URL : https://stackoverflow.com/questions/4611018/apache-poi-excel-how-to-configure-columns-to-be-expanded
'Programing' 카테고리의 다른 글
확대 편집기 창 android studio (0) | 2020.09.11 |
---|---|
Google Maps API v3 : 이벤트 리스너를 제거하는 방법? (0) | 2020.09.11 |
Python : 한 사전이 다른 더 큰 사전의 하위 집합인지 확인 (0) | 2020.09.11 |
jQuery는 데이터 속성 값으로 요소 찾기 (0) | 2020.09.11 |
helm list :“kube-system”네임 스페이스에있는 configmap을 나열 할 수 없습니다. (0) | 2020.09.11 |