Excel 스프레드 시트 읽기 및 쓰기

오픈 소스 커뮤니티는 차트 작성 소프트웨어에서 게임 프레임 워크, 워드 프로세서에 이르기까지 다양한 오픈 소스 Java 프로젝트를 만들었습니다. 이 게시물에서는 Microsoft Excel 스프레드 시트를 읽고 쓰기위한 오픈 소스 라이브러리 프로젝트를 소개합니다.

스프레드 시트 라이브러리 추천

Q : Excel 스프레드 시트를 읽고 쓸 수 있도록 회사의 Java 기반 스프레드 시트 소프트웨어를 확장하라는 요청을 받았습니다. 이 작업에 도움이 될 오픈 소스 Java 라이브러리를 추천 해 주시겠습니까?

A : Excel 스프레드 시트를 읽고, 쓰고, 수정할 수있는 성숙한 Java 기반 오픈 소스 라이브러리 인 JExcelAPI를 확인하고 싶을 수 있습니다. 다음은 여러 기능 중 몇 가지입니다.

  • Excel 95, 97, 2000, XP 및 2003 통합 문서에서 데이터를 읽습니다.
  • 수식 읽기 및 쓰기 (Excel 97 이상 만 해당)
  • Excel 2000 형식으로 스프레드 시트를 생성합니다.
  • 글꼴, 숫자 및 날짜 형식 지원
  • 셀 셰이딩, 셀 경계 및 셀 채색 지원
  • 기존 워크 시트 수정
  • 차트 복사 지원
  • 스프레드 시트에 이미지 삽입 및 복사 지원

JExcelAPI는 Andrew Kahn이 개발했으며 GNU Lesser General Public License에 따라 출시되었습니다.

JExcelAPI 라이브러리 다운로드

Q : JExcelAPI는 어떻게 다운로드합니까?

A : JExcelAPI를 다운로드하려면 다음 단계를 완료하십시오.

  1. 브라우저에서 JExcelAPI의 SourceForge 사이트를 가리 키십시오.
  2. jexcelapi링크를 클릭하십시오 .
  3. 결과 페이지에서 폴더 링크 중 하나를 클릭합니다. 예를 들어 2.6.12링크를 클릭했습니다 .
  4. 결과 페이지에서 배포 아카이브 파일 이름을 클릭합니다. 예를 들어 jexcelapi_2_6_12.zip링크를 클릭했습니다 .
  5. 잠시 후 브라우저에이 파일을 저장하라는 메시지가 표시됩니다. 계속해서 파일을 저장하십시오.

다운로드 후이 파일을 보관 해제합니다. jexcelapi디렉토리 내의 홈 디렉토리를 관찰해야합니다 jexcelapi_2_6_12.

JExcelAPI 라이브러리 시연

Q : JExcelAPI 라이브러리에 데모가 포함되어 있습니까?

A : JExcelAPI의 jexcelapi홈 디렉토리에는 jxl.jar스프레드 시트 읽기, 쓰기 및 복사를위한 데모 가 포함 된 파일이 있습니다.

읽기 데모는 기존 스프레드 시트를 읽고 -csv또는 -xml명령 줄 옵션을 통해 CSV (쉼표로 구분 된 값) 또는 XML 형식으로 변환합니다 . 다음 예를 고려하십시오.

java -jar jxl.jar -csv budget.xls java -jar jxl.jar -xml budget.xls

이 예제 budget.xls는 CSV 및 XML 형식의 내용을 읽고 표준 출력으로 출력합니다. -csv또는 -xml지정 되지 않은 경우 -csv가정합니다.

쓰기 데모는 공식, 테두리, 이미지 등을 포함하는 샘플 스프레드 시트를 만듭니다. 이 스프레드 시트는 -write아래와 같이 명령 줄 옵션 을 지정하여 생성됩니다 .

java -jar jxl.jar -write sample.xls

그림 1은 결과 sample.xls스프레드 시트의 일부를 보여줍니다 .

그림 1. LibreOffice Calc를 사용하여 sample.xls 스프레드 시트에 액세스했습니다.

복사 데모는와 jxlrwtest.xls동일한 디렉토리에 저장된 샘플 스프레드 시트 jxl.jar를 새 스프레드 시트 로 복사 합니다. 결과 스프레드 시트에서 첫 번째 시트 (원본)는 변경되지 않은 반면 두 번째 시트 (수정 됨)에는 수정 된 값이 포함됩니다.

이 데모는 -rw명령 줄 옵션 jxlrwtest.xls과 출력 스프레드 시트의 이름을 지정하여 생성됩니다 . 다음 명령 줄을 고려하십시오.

java -jar jxl.jar -rw jxlrwtest.xls copy.xls

이 명령 줄 jxlrwtest.xlscopy.xls. 그림 2는 LibreOffice Calc의 두 번째 (수정 된) 시트를 보여줍니다.

그림 2. 원본 및 수정 된 시트를 보려면 원본 및 수정 된 탭 클릭

컴파일 및 실행을위한 JExcelAPI 포함

Q : 소스 코드를 컴파일하고 애플리케이션을 실행할 때 JExcelAPI를 어떻게 포함합니까?

A : 소스 코드를 컴파일하고 응용 프로그램을 실행할 때 JExcelAPI를 포함하려면 다음 중 하나를 수행하십시오.

  • 환경 변수에 jexcelapi홈 디렉토리의 jxl.jar파일을 추가하십시오 CLASSPATH.
  • 및 프로그램의 명령 줄 옵션을 jxl.jar통해 포함 합니다 .javacjava-cp

JExcelAPI로 프로그래밍

Q : JExcelAPI를 활용하는 Java 프로그램을 어떻게 생성합니까?

A는 :jexcelapi 홈 디렉토리는 포함 tutorial.html선물이 파일 JExcelAPI과 프로그래밍에 대한 기본적인 튜토리얼. 이 튜토리얼은 스프레드 시트를 읽고, 쓰고, 복사하는 방법을 보여줍니다. 자습서에서는 서식에 대해서도 설명합니다.

jexcelapidocs광범위한 API 문서에 대한 액세스를 제공 하는 하위 디렉토리 도 포함되어 있습니다. 웹 브라우저에서이 디렉토리의 index.html파일 을 가리키면 이 라이브러리의 네 가지 문서화 된 패키지에서 유형을 탐색 할 수 있습니다.

  • jxl: 주요 패키지 유형
  • jxl.demo: 다양한 데모 유형
  • jxl.format: 서식과 관련된 유형
  • jxl.write: 스프레드 시트에 쓰기위한 유형

Note that this list isn't exhaustive. Additional packages such as jxl.read are present but are not documented. To learn about additional packages, execute jar tvf jxl.jar and examine the package information in the resulting JAR listing.

To help you get started with JExcelAPI, I've created a simple JExcelAPIDemo application that demonstrates creating a new spreadsheet that is saved in output.xls and then reading and outputting the contents of this spreadsheet. Check out Listing 1.

Listing 1. Writing and reading a simple spreadsheet

import java.io.File; import java.io.IOException; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; import jxl.write.Label; import jxl.write.Number; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; public class JExcelAPIDemo { public static void main(String[] args) throws BiffException, IOException, WriteException { WritableWorkbook wworkbook; wworkbook = Workbook.createWorkbook(new File("output.xls")); WritableSheet wsheet = wworkbook.createSheet("First Sheet", 0); Label label = new Label(0, 2, "A label record"); wsheet.addCell(label); Number number = new Number(3, 4, 3.1459); wsheet.addCell(number); wworkbook.write(); wworkbook.close(); Workbook workbook = Workbook.getWorkbook(new File("output.xls")); Sheet sheet = workbook.getSheet(0); Cell cell1 = sheet.getCell(0, 2); System.out.println(cell1.getContents()); Cell cell2 = sheet.getCell(3, 4); System.out.println(cell2.getContents()); workbook.close(); } }

Listing 1 first creates a writable workbook by invoking one of Workbook's factory methods. A writable sheet is then created for this workbook, and then a label and a number are added as the sheet's two cell values. The workbook is then written and closed.

Listing 1 continues by getting a workbook associated with output.xls and reading its contents. The getSheet() method provides access to the first sheet within this workbook. Its getCell() method is called to access the two cells, whose contents are then output.

Assuming that jxl.jar is located in the current directory, execute the following command to compile Listing 1:

javac -cp jxl.jar JExcelAPIDemo.java

Assuming success, execute the following command to run JExcelAPIDemo:

java -cp jxl.jar;. JExcelAPIDemo

You should observe the following output:

A label record 3.146

Figure 3 shows you output.xls in a LibreOffice context.

Figure 3. The solitary sheet displays two cell values

What's next?

다음에는 Java 라이브러리의 진화를 다루는 일련의 퍼즐을 제시합니다. 이러한 퍼즐은 클라이언트 프로그램과 이러한 프로그램이 사용하는 라이브러리 간의 소스 및 바이너리 코드 호환성에 중점을 둡니다.

다운로드 소스 다운로드이 게시물의 애플리케이션에 대한 소스 코드를 가져옵니다. JavaWorld 용 Jeff Friesen 작성

게시물의 코드를 개발하는 데 다음 소프트웨어가 사용되었습니다.

  • 64 비트 JDK 7u6
  • JExcelAPI 2.6.12

게시물의 코드는 다음 플랫폼에서 테스트되었습니다.

  • 64 비트 Windows 7 SP1의 JVM

이 이야기, "Excel 스프레드 시트 읽기 및 쓰기"는 원래 JavaWorld에서 게시했습니다.