이전 글에서 Apache Poi 를 활용하여 Excel 표만들기 예제를 작성했습니다.
이번 글에서는 특정 양식을 복사해서 사용하는 방법을 간단하게 정리하려고 합니다.
안드로이드에서 엑셀을 생성한다고 했을 때 내용이 복잡하면 복잡할수록 힘들어지기 때문에
만들어진 양식을 복사해서 사용하는 것도 좋은 방법이 될 수 있을 것 같습니다.
1. Apache Poi 라이브러리 사용하기 / Excel 표 만들기 예제
2. Excel 양식 복사하기 예제 (현재 글)
1. 양식 Assets 저장
사용하고자 하는 양식은 assets에 저장해 줍시다.
저는 "구매 품의서"라는 양식을 sample.xlsx 이름으로 저장하였습니다.
2. 양식 복사하기: cloneSheet(sheetNum, newName)
assets에 저장된 파일을 불러오고 양식을 복사하기 위해 cloneSheet 메서드를 사용합니다.
clonesheet의 인자를 확인해보면 아래와 같습니다.
- @param sheetNum : 복사할 sheet Index
- @param newName : 복사해서 새로 만들어진 sheet name
이제 따로 저장한 "구매 품의서 양식"(sample.xlsx)을 통해 직접 확인해보려고 합니다.
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: