Java 애플리케이션에서 Excel API를 사용하여 Excel 문서 만들기 (Windows, Linux, Mac) > 블로그 & Tips

본문 바로가기

Java & Kotlin API

블로그 & Tips

Java 애플리케이션에서 Excel API를 사용하여 Excel 문서 만들기 (Windows, Linux, Mac)

페이지 정보

작성자 GrapeCity 작성일 20-10-14 13:29 조회 20회 댓글 0건

본문

GCExcel Java속도가 빠르고 기능이 풍부한 VSTO 기반의 Excel 문서 API입니다. GcExcel Java에는 Documents for Excel .NET 버전에서 지원하는 모든 기능이 포함되어 있으므로 개발자는 복잡한 비즈니스 사용 사례를 처리하고 Java 응용 프로그램에서 Excel 스프레드시트로 작업할 수 있습니다.

이 포스팅에서는 Excel Java 스프레드시트를 생성하는 방법을 알아보고 표, 피벗 테이블, 스타일, 조건부 서식 지정, 차트와 같은 기능을 스프레드시트에 추가하는 방법을 소개합니다.

이 자습서에서는 GcExcel Java로 작업하기 위해 IntelliJ를 Java IDE로 사용합니다. 패키지 추가 및 GcExcel Java를 이용한 작업 방법은 Windows, MAC, Linux 등 세 운영 체제 모두에서 동일합니다.


1단계: 설치

필수 구성 요소

  1. Windows/Linux/Mac용 Java 6 SDK 이상 버전을 설치합니다.
  2. 원하는 Java IDE를 설치합니다. 이 문서에서는 GcExcel을 IntelliJ와 함께 사용하는 방법을 중점적으로 살펴봅니다.


IntelliJ에 GcExcel 패키지 설치

  1. 웹 사이트에서 GcExcel 패키지(gcexcel-2.0.0.jar)를 다운로드합니다.
  2. IntelliJ IDE를 엽니다.
  3. 새 Java 프로젝트를 만듭니다.
  4. 'src' 폴더 아래에 'libs' 폴더를 추가합니다.
  5. gcexcel-2.0.0.jar를 'libs' 폴더에 복사합니다.
  6. 'libs' 폴더를 마우스 오른쪽 버튼으로 클릭하고 '라이브러리로 추가' 옵션을 선택합니다.
  7. '확인'을 누릅니다.

Gradle 프로젝트인 경우:

build.gradle을 열고 종속성 블록 컴파일에서 아래 스크립트를 추가합니다("com.grapecity.documents:gcexcel:2.0.0.jar").

Maven 프로젝트인 경우:

pom.xml을 열고 종속성 노드에 다음 xml 요소를 추가합니다.

<dependency>
   <groupId>com.grapecity.documents</groupId>
   <artifactId>gcexcel</artifactId>
   <version>2.0.0-snapshot</version>
</dependency>

jar 파일이 프로젝트의 라이브러리로 추가되고, 이제 프로젝트에서 이 jar 파일에 있는 모든 GcExcel 클래스를 참조할 수 있게 됩니다.


2단계: 프로젝트 설정

네임스페이스 추가

Main.java에서 다음 네임스페이스를 가져옵니다.

import java.util.*;
import com.grapecity.documents.excel.*;
import com.grapecity.documents.excel.drawing.*;

새 통합 문서 만들기

기본 함수에 다음 코드를 추가하여 새 GcExcel 통합 문서를 만듭니다.

Workbook workbook = new Workbook();

데이터 초기화

워크시트에 넣을 데이터를 준비하고 2차원 배열로 정렬합니다. 그런 다음 워크시트의 setValue 메서드를 사용해 이 값을 워크시트의 특정 범위에 설정합니다. 그리고 각각의 데이터 범위에 레이블 및 계산을 추가합니다.

Object[][] sourceData = new Object[][]{
    {"ITEM", "AMOUNT"},
    {"Income 1", 2500},
    {"Income 2", 1000},
    {"Income 3", 250},
    {"Other", 250},
};
​
Object[][] sourceData1 = new Object[][]{
    {"ITEM", "AMOUNT"},
    {"Rent/mortgage", 800},
    {"Electricity", 120},
    {"Gas", 50},
    {"Cell phone", 45},
    {"Groceries", 500},
    {"Car payment", 273},
    {"Auto expenses", 120},
    {"Student loans", 50},
    {"Credit cards", 100},
    {"Auto Insurance", 78},
    {"Personal care", 50},
    {"Entertainment", 100},
    {"Miscellaneous", 50},
};
​
IWorksheet worksheet = workbook.getWorksheets().get(0);
worksheet.setName("Table");
worksheet.getRange("B3:C7").setValue(sourceData);
worksheet.getRange("B10:C23").setValue(sourceData1);
​
worksheet.getRange("B2:C2").merge();
worksheet.getRange("B2").setValue("MONTHLY INCOME");
worksheet.getRange("B9:C9").merge();
worksheet.getRange("B9").setValue("MONTHLY EXPENSES");
worksheet.getRange("E2:G2").merge();
worksheet.getRange("E2").setValue("PERCENTAGE OF INCOME SPENT");
worksheet.getRange("E5:G5").merge();
worksheet.getRange("E5").setValue("SUMMARY");
worksheet.getRange("E3:F3").merge();
worksheet.getRange("E9").setValue("BALANCE");
worksheet.getRange("E6").setValue("Total Monthly Income");
worksheet.getRange("E7").setValue("Total Monthly Expenses");


참고: SQL Server나 모든 유형의 백엔드 데이터베이스, CRM 시스템, 바코드 스캐너, 랩 장비 등 외부 데이터 소스 또는 사용 중인 임의의 데이터 소스에서 데이터를 가져올 수 있습니다.

어떤 데이터 소스의 데이터를 사용하고 싶다면 해당 데이터 소스에 접속하여 데이터 집합을 추가한 다음 위와 유사한 코드를 사용해 유형 개체의 2차원 배열을 만들면 됩니다. 데이터에 적합한 크기의 범위를 설정하고 데이터 집합의 값으로 채울 수 있습니다.


3단계: 표 만들기

위에서 추가한 데이터 범위에 표를 추가하고 스타일을 설정합니다.

//소득을 표시할 첫 번째 표를 만듭니다.
ITable incomeTable = worksheet.getTables().add(worksheet.getRange("B3:C7"), true);
incomeTable.setName("tblIncome");
incomeTable.setTableStyle(workbook.getTableStyles().get("TableStyleMedium4"));
​
//지출을 표시할 두 번째 표를 만듭니다.
ITable expensesTable = worksheet.getTables().add(worksheet.getRange("B10:C23"), true);
expensesTable.setName("tblExpenses");
expensesTable.setTableStyle(workbook.getTableStyles().get("TableStyleMedium4"));
​


4단계: 표에 수식 설정

각각의 표는 소득 및 지출 요약을 계산합니다. 각 표에서 해당 월의 요약에 대해 이름을 설정합니다.

worksheet.getNames().add("TotalMonthlyIncome", "=SUM(tblIncome[AMOUNT])");
worksheet.getNames().add("TotalMonthlyExpenses", "=SUM(tblExpenses[AMOUNT])");

이제 이 이름을 사용해 월 소득 합계, 월 지출 합계, 소득 대비 지출 비율, 잔고를 계산하는 수식을 설정합니다.

worksheet.getRange("E3").setFormula("=TotalMonthlyExpenses");
worksheet.getRange("G3").setFormula("=TotalMonthlyExpenses/TotalMonthlyIncome");
worksheet.getRange("G6").setFormula("=TotalMonthlyIncome");
worksheet.getRange("G7").setFormula("=TotalMonthlyExpenses");
worksheet.getRange("G9").setFormula("=TotalMonthlyIncome-TotalMonthlyExpenses");

이 시점에서 통합 문서를 저장하고(코드는 10단계 참조) 프로젝트를 실행하면 다음과 같은 Excel 파일이 생성됩니다.

표에 수식 설정

표에 수식 설정


5단계: 행 높이 및 열 너비 설정

행 높이 및 열 너비를 균일하게 설정하려면 모든 행 및 열 범위에 대해 IWorksheet.setStandardHeightIWorksheet.setStandardWidth를 사용해 전체 워크시트의 기본 행 높이 및 열 너비를 설정하십시오.

worksheet.setStandardHeight(26.25);
worksheet.setStandardWidth(8.43);
​
worksheet.getRange("2:24").setRowHeight(27);
worksheet.getRange("A:A").setColumnWidth(2.855);
worksheet.getRange("B:B").setColumnWidth(33.285);
worksheet.getRange("C:C").setColumnWidth(25.57);
worksheet.getRange("D:D").setColumnWidth(1);
worksheet.getRange("E:F").setColumnWidth(25.57);
worksheet.getRange("G:G").setColumnWidth(14.285);
​

통합 문서를 저장하고 프로젝트를 실행합니다. 모든 행과 열이 설정한 높이와 너비로 되어 있음을 알 수 있습니다.

행 높이 및 열 너비 설정

행 높이 및 열 너비 설정

다음 단계에서는 스타일을 설정하여 Excel 스프레드시트를 전문가 느낌의 스프레드시트로 서식 지정합니다.


6단계: 스타일 설정

일정한 셀 범위에 대해 명명된 스타일을 설정할 수 있습니다. 원하는 속성을 사용해 이 스타일을 수정할 수 있습니다. 나만의 고유한 사용자 정의 스타일을 만들 수도 있습니다.

IStyle currencyStyle = workbook.getStyles().get("Currency");
currencyStyle.setIncludeAlignment(true);
currencyStyle.setHorizontalAlignment(HorizontalAlignment.Left);
currencyStyle.setVerticalAlignment(VerticalAlignment.Bottom);
currencyStyle.setNumberFormat("$#,##0.00");
​
IStyle heading1Style = workbook.getStyles().get("Heading 1");
heading1Style.setIncludeAlignment(true);
heading1Style.setHorizontalAlignment(HorizontalAlignment.Center);
heading1Style.setVerticalAlignment(VerticalAlignment.Center);
heading1Style.getFont().setName("Century Gothic");
heading1Style.getFont().setBold(true);
heading1Style.getFont().setSize(11);
heading1Style.getFont().setColor(Color.getWhite());
heading1Style.setIncludeBorder(false);
heading1Style.setIncludePatterns(true);
heading1Style.getInterior().setColor(Color.FromRGB(32, 61, 64));
​
IStyle percentStyle = workbook.getStyles().get("Percent");
percentStyle.setIncludeAlignment(true);
percentStyle.setHorizontalAlignment(HorizontalAlignment.Center);
percentStyle.setIncludeFont(true);
percentStyle.getFont().setColor(Color.FromRGB(32, 61, 64));
percentStyle.getFont().setName("Century Gothic");
percentStyle.getFont().setBold(true);
percentStyle.getFont().setSize(14);

사용자 정의 스타일을 특정 범위에 적용합니다. 그리고 워크시트의 눈금선도 끕니다.

worksheet.getSheetView().setDisplayGridlines(false);
worksheet.getRange("C4:C7, C11:C23, G6:G7, G9").setStyle(currencyStyle);
worksheet.getRange("B2, B9, E2, E5").setStyle(heading1Style);
worksheet.getRange("G3").setStyle(percentStyle);
​

그러면 스프레드시트는 다음과 같은 모습이 됩니다.

스타일 설정

스타일 설정


GcExcel에서는 특정 범위에 개별 스타일 요소를 설정할 수도 있습니다.

worksheet.getRange("E6:G6").getBorders().get(BordersIndex.EdgeBottom).setLineStyle(BorderLineStyle.Medium);
worksheet.getRange("E6:G6").getBorders().get(BordersIndex.EdgeBottom).setColor(Color.FromRGB(32, 61, 64));
worksheet.getRange("E7:G7").getBorders().get(BordersIndex.EdgeBottom).setLineStyle(BorderLineStyle.Medium);
worksheet.getRange("E7:G7").getBorders().get(BordersIndex.EdgeBottom).setColor(Color.FromRGB(32, 61, 64));
​
worksheet.getRange("E9:G9").getInterior().setColor(Color.FromRGB(32, 61, 64));
worksheet.getRange("E9:G9").setHorizontalAlignment(HorizontalAlignment.Left);
worksheet.getRange("E9:G9").setVerticalAlignment(VerticalAlignment.Center);
worksheet.getRange("E9:G9").getFont().setName("Century Gothic");
worksheet.getRange("E9:G9").getFont().setBold(true);
worksheet.getRange("E9:G9").getFont().setSize(11);
worksheet.getRange("E9:G9").getFont().setColor(Color.getWhite());
worksheet.getRange("E3:F3").getBorders().setColor(Color.FromRGB(32, 61, 64));


7단계: 조건부 서식 추가

적용할 조건에 따라 일정 범위에 조건부 서식을 적용할 수 있습니다. 이 예에서는 소득에서 지출이 차지하는 비율을 데이터 막대로 표시합니다.

IDataBar dataBar = worksheet.getRange("E3").getFormatConditions().addDatabar();
dataBar.getMinPoint().setType(ConditionValueTypes.Number);
dataBar.getMinPoint().setValue(1);
dataBar.getMaxPoint().setType(ConditionValueTypes.Number);
dataBar.getMaxPoint().setValue("=TotalMonthlyIncome");
dataBar.setBarFillType(DataBarFillType.Gradient);
dataBar.getBarColor().setColor(Color.getRed());
dataBar.setShowValue(false);
​

개별 스타일 요소와 조건부 소식이 모두 적용된 스프레드시트의 모습은 다음과 같습니다.

조건부 서식 추가

조건부 서식 추가


8단계: 피벗 테이블 만들기

먼저 새 워크시트를 추가하고 이름을 설정합니다.

//새 워크시트를 추가하고 그 안에 피벗 테이블을 만듭니다.
IWorksheet worksheet2 = workbook.getWorksheets().add();
worksheet2.setName("Pivot Table");

피벗 테이블에 입력할 데이터를 준비합니다.

sourceData = new Object[][]{
    {"Order ID", "Product", "Category", "Amount", "Date", "Country"},
    {1, "Carrots", "Vegetables", 4270, new GregorianCalendar(2018, 0, 6), "United States"},
    {2, "Broccoli", "Vegetables", 8239, new GregorianCalendar(2018, 0, 7), "United Kingdom"},
    {3, "Banana", "Fruit", 617, new GregorianCalendar(2018, 0, 8), "United States"},
    {4, "Banana", "Fruit", 8384, new GregorianCalendar(2018, 0, 10), "Canada"},
    {5, "Beans", "Vegetables", 2626, new GregorianCalendar(2018, 0, 10), "Germany"},
    {6, "Orange", "Fruit", 3610, new GregorianCalendar(2018, 0, 11), "United States"},
    {7, "Broccoli", "Vegetables", 9062, new GregorianCalendar(2018, 0, 11), "Australia"},
    {8, "Banana", "Fruit", 6906, new GregorianCalendar(2018, 0, 16), "New Zealand"},
    {9, "Apple", "Fruit", 2417, new GregorianCalendar(2018, 0, 16), "France"},
    {10, "Apple", "Fruit", 7431, new GregorianCalendar(2018, 0, 16), "Canada"},
    {11, "Banana", "Fruit", 8250, new GregorianCalendar(2018, 0, 16), "Germany"},
    {12, "Broccoli", "Vegetables", 7012, new GregorianCalendar(2018, 0, 18), "United States"},
    {13, "Carrots", "Vegetables", 1903, new GregorianCalendar(2018, 0, 20), "Germany"},
    {14, "Broccoli", "Vegetables", 2824, new GregorianCalendar(2018, 0, 22), "Canada"},
    {15, "Apple", "Fruit", 6946, new GregorianCalendar(2018, 0, 24), "France"},
};

참고: Java에서 일반 달력을 사용하려면 프로젝트에 다음 네임스페이스가 포함되어야 합니다. 

import java.util.*;


데이터를 해당 범위에 설정하고 피벗 캐시 및 피벗 테이블을 설정합니다.

worksheet2.getRange("A1:F16").setValue(sourceData);
worksheet2.getRange("A:F").setColumnWidth(15);
IPivotCache pivotcache = workbook.getPivotCaches().create(worksheet2.getRange("A1:F16"));
IPivotTable pivottable = worksheet2.getPivotTables().add(pivotcache, worksheet2.getRange("H7"), "pivottable1"); 

여기까지 수행하면 데이터와 DIY 피벗 테이블을 얻을 수 있습니다.

피벗 테이블 만들기

피벗 테이블 만들기

한 걸음 더 나가 보겠습니다. 다음 코드를 추가하여 피벗 테이블 필드를 추가하고 각 필드의 방향을 설정합니다.

//피벗 테이블의 필드를 구성합니다.
IPivotField field_Category = pivottable.getPivotFields().get("Category");
field_Category.setOrientation(PivotFieldOrientation.RowField);
​
IPivotField field_Product = pivottable.getPivotFields().get("Product");
field_Product.setOrientation(PivotFieldOrientation.ColumnField);
​
IPivotField field_Amount = pivottable.getPivotFields().get("Amount");
field_Amount.setOrientation(PivotFieldOrientation.DataField);
​
IPivotField field_Country = pivottable.getPivotFields().get("Country");
field_Country.setOrientation(PivotFieldOrientation.PageField);

이렇게 해서 완전한 피벗 테이블을 만들었습니다.

완성된 피벗 테이블

완성된 피벗 테이블

피벗 테이블에 대해 자세히 알아보려면 문서의 피벗 테이블온라인 데모의 피벗 테이블 섹션을 참조하십시오.


9단계: 차트 추가

차트를 추가하려면 먼저 차트에 새 시트를 추가합니다.

IWorksheet worksheet3 = workbook.getWorksheets().add();
worksheet3.setName("Chart");

Documents for Excel에서 차트는 기본적으로 도형 개체입니다. 만들고자 하는 차트의 유형을 설정하려면 먼저 도형을 만든 다음 이 도형에 차트를 추가하십시오. AddChart 매개 변수로 ChartType과 위치 및 크기를 지정할 수 있습니다. 요소 내에서 왼쪽 및 위쪽 위치를 지정하고 너비와 높이로 크기를 지정합니다. 

IShape shape = worksheet3.getShapes().addChart(ChartType.ColumnClustered, 300, 10, 300, 300);
​

이제 차트 제목을 설정하고, 데이터를 추가하고, 차트를 만들 수 있습니다.

//차트 제목 설정
shape.getChart().getChartTitle().setText("Sales Increases Over Previous Quarter");
worksheet3.getRange("A1:D6").setValue(new Object[][]{
                {null, "S1", "S2", "S3"},
                {"Item1", 10, 25, 25},
                {"Item2", -51, -36, 27},
                {"Item3", 52, -85, -30},
                {"Item4", 22, 65, 65},
                {"Item5", 23, 69, 69}
    });
//차트 생성
shape.getChart().getSeriesCollection().add(worksheet3.getRange("A1:D6"), RowCol.Columns, true, true);


이 시점에서 차트의 모습은 다음과 같습니다.

차트

차트

데이터 표를 더 멋지게 다듬고 숫자의 형식을 지정하려면 특정 범위에 서식을 적용하면 됩니다. 차트의 값 축에서 숫자 형식을 지정해 보겠습니다.

//Format data table
worksheet3.getRange("B1:D1").setHorizontalAlignment(HorizontalAlignment.Right);
worksheet3.getRange("B1:D1").getFont().setBold(true);
worksheet3.getRange("B2:D6").setNumberFormat("€#,##0");
​
//Format axis numbers
IAxis value_axis = shape.getChart().getAxes().item(AxisType.Value);
value_axis.getTickLabels().setNumberFormat("€#,##0");

다음은 시트가 세 장인 통합 문서에 포함된 멋진 서식의 차트입니다.

서식 있는 차트

서식 있는 차트

차트에 대해 자세히 알아보려면 개발자 문서의 차트 사용 섹션 온라인 데모의 차트 섹션을 참조하십시오.


10단계: XLSX로 저장

드디어 노력의 결실이 나타납니다. 모든 내용을 Excel 파일로 내보내서 빌드한 차트를 확인할 수 있습니다. 코드 처리 후에 저장되도록 다른 모든 코드 ‘뒤에’ 이 코드 행을 추가합니다.

workbook.save("./GcExcelFeatures.xlsx");

이렇게 해서 Documents for Excel에서 Java를 사용하여 간단한 스프레드시트를 생성하는 방법을 알아보았습니다.


코드 다운로드

  • 페이스북으로 공유
  • 트위터로  공유
  • 구글플러스로 공유
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

그레이프시티 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

태그

그레이프시티 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@grapecity.com | 전화 : 1670-0583 | 경기도 안양시 동안구 시민대로 230, B-703(관양동, 아크로타워) 그레이프시티(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 Copyright ⓒ 2020 GrapeCity inc.