이전 글에서 Apache Poi 를 활용하여 Excel 표만들기 예제를 작성했습니다. 이번 글에서는 특정 양식을 복사해서 사용하는 방법을 간단하게 정리하려고 합니다. 안드로이드에서 엑셀을 생성한다고 했을 때 내용이 복잡하면 복잡할수록 힘들어지기 때...

[안드로이드] Apache Poi 엑셀 양식복사(Copy Form) 예제

 

이전 글에서 Apache Poi 를 활용하여 Excel 표만들기 예제를 작성했습니다.

이번 글에서는 특정 양식을 복사해서 사용하는 방법을 간단하게 정리하려고 합니다.

안드로이드에서 엑셀을 생성한다고 했을 때 내용이 복잡하면 복잡할수록 힘들어지기 때문에

만들어진 양식을 복사해서 사용하는 것도 좋은 방법이 될 수 있을 것 같습니다.



1. Apache Poi 라이브러리 사용하기 / Excel 표 만들기 예제

2. Excel 양식 복사하기 예제 (현재 글)

3. Excel 이미지 넣기 예제


 

 

 

 

 

 

1. 양식 Assets 저장

사용하고자 하는 양식은 assets에 저장해 줍시다.

저는 "구매 품의서"라는 양식을 sample.xlsx 이름으로 저장하였습니다.

 








2. 양식 복사하기: cloneSheet(sheetNum, newName)

assets에 저장된 파일을 불러오고 양식을 복사하기 위해 cloneSheet 메서드를 사용합니다.

clonesheet의 인자를 확인해보면 아래와 같습니다.


 - @param sheetNum :  복사할 sheet Index

 - @param newName : 복사해서 새로 만들어진 sheet name

 

이제 따로 저장한 "구매 품의서 양식"(sample.xlsx)을 통해 직접 확인해보려고 합니다.

 

ExcelBase.kt (참조)

class ExcelCopyFormEx : ExcelBase() {

companion object {
const val ASSET_SAMPLE = "sample.xlsx" // form
}

override fun create(): Workbook {
val inputStream = MainApplication.getContext().assets.open(ASSET_SAMPLE)
xssfWorkbook = XSSFWorkbook(inputStream) // sample.xlsx 불러 오기

val sheetA = xssfWorkbook.cloneSheet(0, "홍길동") // copy form
addContentA(sheetA)

val sheetB = xssfWorkbook.cloneSheet(0, "홍길순") // copy form
addContentB(sheetB)

//xssfWorkbook.removeSheetAt(0) // 양식 삭제

return xssfWorkbook
}

private fun addContentA(sheet: Sheet) {
setCell(sheet, 12, 1, "마우스")
setCell(sheet, 12, 4, "ea")
setCell(sheet, 12, 5, 3)
setCell(sheet, 12, 6, 125000)
setCellFormula(sheet, 12, 7, "IF(ISBLANK(F13),\"\",F13*G13)")

setCell(sheet, 13, 1, "키보드")
setCell(sheet, 13, 4, "ea")
setCell(sheet, 13, 5, 2)
setCell(sheet, 13, 6, 210000)
setCellFormula(sheet, 13, 7, "IF(ISBLANK(F13),\"\",F13*G13)")

setCellFormula(sheet, 25, 5, "SUM(F13:F25)")
setCellFormula(sheet, 25, 6, "SUM(G13:G25)")
setCellFormula(sheet, 25, 7, "SUM(H13:H25)")
}

private fun addContentB(sheet: Sheet) {
setCell(sheet, 12, 1, "헤드셋")
setCell(sheet, 12, 4, "ea")
setCell(sheet, 12, 5, 1)
setCell(sheet, 12, 6, 99000)
setCellFormula(sheet, 12, 7, "IF(ISBLANK(F13),\"\",F13*G13)")

setCell(sheet, 13, 1, "노트북")
setCell(sheet, 13, 4, "ea")
setCell(sheet, 13, 5, 2)
setCell(sheet, 13, 6, 710000)
setCellFormula(sheet, 13, 7, "IF(ISBLANK(F13),\"\",F14*G14)")

setCell(sheet, 25, 8, "")
setCellFormula(sheet, 25, 5, "SUM(F13:F25)")
setCellFormula(sheet, 25, 6, "SUM(G13:G25)")
setCellFormula(sheet, 25, 7, "SUM(H13:H25)")
}
}


 

 

 

 

 

 

3. 실행 결과

class MainActivity : AppCompatActivity() {

private lateinit var binding: ActivityMainBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)

binding.btnCopyFormEx.setOnClickListener {
val copyFormEx = ExcelCopyFormEx()
val workBook = copyFormEx.create()
copyFormEx.saveExcel(workBook, "/sdcard/Download/copyFormEx.xlsx")
}
}
}

 

 


 

 

 

 

4. 예제 다운로드

https://github.com/bictoselfdev/ExcelEx

 

 



 

0 comments: