! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

Kotlin에서 Excel 파일을 생성하는 방법 > 블로그 & Tips

본문 바로가기

Java & Kotlin API

블로그 & Tips

Kotlin에서 Excel 파일을 생성하는 방법

페이지 정보

작성자 GrapeCity 작성일 2020-10-14 14:27 조회 2,397회 댓글 0건

본문

지난 몇 년간 Kotlin은 탁월한 다목적성 덕분에 Java를 대신할 언어로 Java보다 큰 인기를 누렸습니다. Java Virtual Machine(JVM)에서 실행되는 정적 유형의 프로그래밍 언어인 Kotlin은 객체 지향 스타일과 기능적 프로그래밍 스타일을 결합하여 Java의 결점을 해소하며, Android 개발 분야에서 가장 인기 있는 언어로 부상하고 있습니다.

Kotlin을 사용하는 주된 이유는 이 언어가 Java와 호환되기 때문입니다. 고급 프레임워크를 포함해 Java의 모든 라이브러리/프레임워크를 Kotlin에서 사용할 수 있습니다. 프로젝트 변환과 같은 주요 단계가 필요 없으므로 새 언어를 배우지 않아도 됩니다.


지난해에 당사는 GcExcel Java를 릴리스한 바 있습니다. 이 라이브러리는 속도가 빠르고 기능이 풍부한 VSTO 기반의 Excel 문서 API로서, 이를 통해 원하는 응용 프로그램에서 스프레드시트를 생성, 변환, 계산, 서식 지정, 구문 분석할 수 있습니다. 스프레드시트 가져오기, 데이터 계산, 스프레드시트의 쿼리/생성/내보내기, 정렬/필터링/서식 지정/조건부 서식 추가, 데이터 유효성 검사, 그룹화/스파크라인/차트/도형/그림/슬라이서/메모/하이퍼링크/테마 추가와 같은 다양한 기능 집합이 준비되어 있습니다.

이 외에도 기존 Excel 템플릿을 가져오고, 데이터를 추가하고, 스프레드시트를 다시 저장할 수 있습니다. GrapeCity Documents for Excel과 함께 GrapeCity SpreadJS를 사용할 수도 있습니다.

Java API인 GcExcel은 Kotlin과 완벽하게 호환됩니다. Kotlin으로 실행되는 샘플을 보려면 GcExcel 샘플 브라우저를 참조하십시오.

이 가이드에서는 GcExcel과 Kotlin을 시작하는 방법을 안내합니다.


GcExcel 및 Kotlin 시작하기


1단계:

IntelliJ IDE를 엽니다.

2단계:

새 프로젝트를 만듭니다.

3단계:

왼쪽 창에서 'Kotlin'을 선택하고 새로 열리는 오른쪽 창에서 'Kotlin/JVM'을 선택합니다.

‘다음’을 클릭합니다.

GcExcel 및 Kotlin 시작하기

4단계:

프로젝트에 제목을 지정하고 '마침'을 클릭합니다.

5단계:

'src' 폴더 아래에 'libs' 폴더를 만들고 gcexcel-2.2.0.jar 파일을 여기에 둡니다.

6단계:

IDE에서 'libs'를 마우스 오른쪽 버튼으로 클릭하고 '라이브러리로 추가'를 선택합니다.

7단계:

'src' 폴더에서 마우스 오른쪽 버튼을 클릭하여 새 Kotlin 클래스 파일을 추가하고 'Main.kt'라는 이름을 지정합니다.

8단계:

Main.kt에 다음 코드를 입력합니다.

a. 다음과 같이 필요한 패키지를 가져옵니다.

package com.grapecity
​
import com.grapecity.documents.excel.*
import com.grapecity.documents.excel.drawing.*
import com.grapecity.documents.excel.IWorksheet
import com.grapecity.documents.excel.Workbook

b. 다음과 같이 주요 함수를 만들고, 통합 문서를 생성하여 데이터를 추가하는 코드를 삽입합니다.

fun main(args: Array<String>?) {
   val workbook = Workbook()
val worksheet = workbook.worksheets.get(0)
​
worksheet.getRange("B3:C7").value =
    arrayOf(
        arrayOf<Any>("ITEM", "AMOUNT"),
        arrayOf("Income 1", 2500),
        arrayOf("Income 2", 1000),
        arrayOf("Income 3", 250),
        arrayOf("Other", 250)
    )
worksheet.getRange("B10:C23").value =
    arrayOf(
        arrayOf<Any>("ITEM", "AMOUNT"),
        arrayOf("Rent/mortgage", 800),
        arrayOf("Electric", 120),
        arrayOf("Gas", 50),
        arrayOf("Cell phone", 45),
        arrayOf("Groceries", 500),
        arrayOf("Car payment", 273),
        arrayOf("Auto expenses", 120),
        arrayOf("Student loans", 50),
        arrayOf("Credit cards", 100),
        arrayOf("Auto Insurance", 78),
        arrayOf("Personal care", 50),
        arrayOf("Entertainment", 100),
        arrayOf("Miscellaneous", 50)
    )
​
worksheet.getRange("B2:C2").merge()
worksheet.getRange("B2").value = "MONTHLY INCOME"
worksheet.getRange("B9:C9").merge()
worksheet.getRange("B9").value = "MONTHLY EXPENSES"
worksheet.getRange("E2:G2").merge()
worksheet.getRange("E2").value = "PERCENTAGE OF INCOME SPENT"
worksheet.getRange("E5:G5").merge()
worksheet.getRange("E5").value = "SUMMARY"
worksheet.getRange("E3:F3").merge()
worksheet.getRange("E9").value = "BALANCE"
worksheet.getRange("E6").value = "Total Monthly Income"
worksheet.getRange("E7").value = "Total Monthly Expenses"
​
val incomeTable = worksheet.getTables().add(worksheet.getRange("B3:C7"), true)
incomeTable.setName("tblIncome")
incomeTable.setTableStyle(workbook.getTableStyles().get("TableStyleMedium4"))
val expensesTable = worksheet.getTables().add(worksheet.getRange("B10:C23"), true)
expensesTable.setName("tblExpenses")
expensesTable.setTableStyle(workbook.getTableStyles().get("TableStyleMedium4"))
​
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")
​
worksheet.setStandardHeight(26.25)
worksheet.setStandardWidth(8.43)
​
worksheet.getRange("2:24").setRowHeight(27.0)
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.0)
worksheet.getRange("E:F").setColumnWidth(25.57)
worksheet.getRange("G:G").setColumnWidth(14.285)
​
val currencyStyle = workbook.getStyles().get("Currency")
currencyStyle.setIncludeAlignment(true)
currencyStyle.setHorizontalAlignment(HorizontalAlignment.Left)
currencyStyle.setVerticalAlignment(VerticalAlignment.Bottom)
currencyStyle.setNumberFormat("$#,##0.00")
val 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.0)
heading1Style.getFont().setColor(Color.GetWhite())
heading1Style.setIncludeBorder(false)
heading1Style.setIncludePatterns(true)
heading1Style.getInterior().setColor(Color.FromArgb(32, 61, 64))
val percentStyle = workbook.getStyles().get("Percent")
percentStyle.setIncludeAlignment(true)
percentStyle.setHorizontalAlignment(HorizontalAlignment.Center)
percentStyle.setIncludeFont(true)
percentStyle.getFont().setColor(Color.FromArgb(32, 61, 64))
percentStyle.getFont().setName("Century Gothic")
percentStyle.getFont().setBold(true)
percentStyle.getFont().setSize(14.0)
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)
worksheet.getRange("E6:G6").getBorders().get(BordersIndex.EdgeBottom).setLineStyle(BorderLineStyle.Medium)
worksheet.getRange("E6:G6").getBorders().get(BordersIndex.EdgeBottom).setColor(Color.FromArgb(32, 61, 64))
worksheet.getRange("E7:G7").getBorders().get(BordersIndex.EdgeBottom).setLineStyle(BorderLineStyle.Medium)
worksheet.getRange("E7:G7").getBorders().get(BordersIndex.EdgeBottom).setColor(Color.FromArgb(32, 61, 64))
worksheet.getRange("E9:G9").getInterior().setColor(Color.FromArgb(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.0)
worksheet.getRange("E9:G9").getFont().setColor(Color.GetWhite())
worksheet.getRange("E3:F3").getBorders().setColor(Color.FromArgb(32, 61, 64))
​
workbook.save("SimpleBudget.xlsx")
}

9단계:

프로젝트를 실행합니다.

이렇게 해서 Kotlin으로 Excel 파일을 만들었습니다.

GcExcel 및 Kotlin 시작하기



Kotlin 기반 GcExcel에 대해 자세히 알아보기

Kotlin에서 사용할 수 있는 GcExcel 기능에 대한 추가 데모를 보려면 GcExcel Java 샘플 브라우저를 참조하십시오.


샘플 다운로드
  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

태그1

인기글

더보기
  • 인기 게시물이 없습니다.
메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.