자바 프로그램으로 엑셀 파일을 읽어서 출력하는 프로그램을 구성해 본다.
엑셀 파일의 확장자가 .xls 인데, .xlsx로 변환하여 저장한 후 .xlsx 형식의 데이터 파일을 읽어서 필요한 정보를 출력하였다.
다음 사이트를 참조 하였다.
https://huskdoll.tistory.com/890
필요한 라이브러리는 poi-3.11.jar, poi-ooxml-3.11.jar, poi-ooxml-schemas-3.11.jar, xmlbeans-2.6.0.jar 이다. 이를 Java Build Path 설정에서 lib로 포함시켜 준다.
package excel;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelRead {
public static void main(String[] args) {
List<String[]> list = new ArrayList<String[]>();
try (FileInputStream file = new FileInputStream("C:\\Users\\ksseo\\Downloads\\시험문제(2022-01-22).xlsx");
XSSFWorkbook workbook = new XSSFWorkbook(file);){
int rowindex=0;
int columnindex=0;
//시트 수 (첫번째에만 존재하므로 0을 준다)
//만약 각 시트를 읽기위해서는 FOR문을 한번더 돌려준다
XSSFSheet sheet=workbook.getSheetAt(0);
//행의 수
int rows=sheet.getPhysicalNumberOfRows();
for(rowindex=0;rowindex<rows;rowindex++){
//행을읽는다
XSSFRow row=sheet.getRow(rowindex);
if(row !=null){
//셀의 수
int cells=row.getPhysicalNumberOfCells();
String[] data = new String[cells];
for(columnindex=0; columnindex<=cells; columnindex++){
//셀값을 읽는다
XSSFCell cell=row.getCell(columnindex);
String value="";
//셀이 빈값일경우를 위한 널체크
if(cell==null){
continue;
}else{
//타입별로 내용 읽기
switch (cell.getCellType()){
case XSSFCell.CELL_TYPE_FORMULA:
value=cell.getCellFormula();
break;
case XSSFCell.CELL_TYPE_NUMERIC:
value=cell.getNumericCellValue()+"";
break;
case XSSFCell.CELL_TYPE_STRING:
value=cell.getStringCellValue()+"";
break;
case XSSFCell.CELL_TYPE_BLANK:
value=cell.getBooleanCellValue()+"";
break;
case XSSFCell.CELL_TYPE_ERROR:
value=cell.getErrorCellValue()+"";
break;
}
data[columnindex] = value;
}
// System.out.println(rowindex+"번 행 : "+columnindex+"번 열 값은: "+value);
}
list.add(data);
}
}
}catch(Exception e) {
e.printStackTrace();
}
for(int i = 0; i < 20 ; i++) { // 20문제
int offset = generateRandomNumber();
int base = i * 9 + 1 + offset;
String[] problem = list.get(base);
System.out.println("[문제 " + (i+1) + "] " + problem[3]);
System.out.println("1. " + problem[9]);
System.out.println("2. " + problem[10]);
System.out.println("3. " + problem[11]);
System.out.println("4. " + problem[12]);
System.out.println();
}
}
private static int generateRandomNumber() {
return (int)(Math.random() * 9);
}
}
'자바' 카테고리의 다른 글
자바 애플리케이션 샘플 (0) | 2023.10.09 |
---|---|
Arrays.asList() 고정 크기의 ArrayList() 만들기 (0) | 2022.07.19 |
자바 문제풀이 - 인터페이스를 저장한 List (0) | 2022.07.14 |
자바의 정석 4-12 구구단의 일부 출력 (0) | 2022.07.13 |
자바의 정석 4-12 구구단의 일부분 출력 (0) | 2022.07.13 |