티스토리 뷰
1. Filemanager로 파일 가져오는 방법 입니다.
우선 앱 외부 저장소 파일에 접근하기 위해
key: Supports opening documents in place
value: yes
key: Supports Document Browser
value: yes
Info plist에 등록합니다
다음 UIDocumentPickerDelegate를 채택하고 파일을 선택 완료했을때의 api를 호출합니다
class ViewController: UIViewController {
let documnetPicker: UIDocumentPickerViewController = UIDocumentPickerViewController(forOpeningContentTypes: [.spreadsheet], asCopy: true)
override func viewDidLoad() {
super.viewDidLoad()
documnetPicker.delegate = self
}
}
extension ViewController: UIDocumentPickerDelegate {
// 파일 선택이 완료되었을 때 호출되는 delegate 메서드
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
guard let selectedFileURL = urls.first else { return }
print("Selected file URL: \(selectedFileURL)")
getExcel(path: selectedFileURL)
}
}
forOpeningContentTypes: [.spreadsheet] 여기 타입은 여러가지가 있는데 excel 파일에 해당하는 spreadsheet를 추가해줍니다.
2. 엑셀파일을 읽는 방법입니다.
SPM으로 https://github.com/CoreOffice/CoreXLSX Excel Read Libaray를 추가하고,
파일에서 읽어온 excel의 URL path를 가져옵니다
가져온 path를 CoreXLSX라이브러리 함수를 통해 엑셀 데이터를 읽어옵니다
// URL을 사용하여 엑셀 파일을 읽는 함수
func getExcel(path: URL) {
// CoreXLSX에서 파일을 로드하고 데이터 읽기ㄴ
guard let file = XLSXFile(filepath: path.path) else {
print("Failed to open file.")
return
}
do {
for wbk in try file.parseWorkbooks() {
for sheet in try file.parseWorksheetPathsAndNames(workbook: wbk) {
let worksheet = try file.parseWorksheet(at: sheet.path)
guard let parseTexts = try file.parseSharedStrings() else { return }
for parseText in parseTexts.items {
print(parseText.text)
}
}
}
} catch {
print("Error reading Excel file: \(error)")
}
}
마지막으로 총 코드입니다
//
// ViewController.swift
// GetFileReadExcel
//
// Created by jh on 10/31/24.
//
import UIKit
import CoreXLSX
//import SwiftXLSX
class ViewController: UIViewController {
let documnetPicker: UIDocumentPickerViewController = UIDocumentPickerViewController(forOpeningContentTypes: [.spreadsheet], asCopy: true)
@IBAction func tapBtn(_ sender: UIButton) {
present(documnetPicker, animated: true, completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
documnetPicker.delegate = self
}
//
// URL을 사용하여 엑셀 파일을 읽는 함수
func getExcel(path: URL) {
// CoreXLSX에서 파일을 로드하고 데이터 읽기ㄴ
guard let file = XLSXFile(filepath: path.path) else {
print("Failed to open file.")
return
}
do {
for wbk in try file.parseWorkbooks() {
for sheet in try file.parseWorksheetPathsAndNames(workbook: wbk) {
let worksheet = try file.parseWorksheet(at: sheet.path)
guard let parseTexts = try file.parseSharedStrings() else { return }
for parseText in parseTexts.items {
print(parseText.text)
}
}
}
} catch {
print("Error reading Excel file: \(error)")
}
}
}
extension ViewController: UIDocumentPickerDelegate {
// 파일 선택이 완료되었을 때 호출되는 delegate 메서드
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
guard let selectedFileURL = urls.first else { return }
print("Selected file URL: \(selectedFileURL)")
getExcel(path: selectedFileURL)
}
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- swift urlsession 공통화
- swift urlsession network module
- llm pdf rag
- swift network 공통화
- swift network module
- chatgpt rag llm
- swift get excel
- swift 엑셀 읽기
- swift filemanager get excel
- swift urlsession refactoring
- swift urlcomponent encode
- swift network refactoring
- google timer application
- swift urlsession module
- focus timer 어플
- swift 엑셀 가져오기
- rag 기반 llm 챗봇
- 구글 타이머 어플
- llm csv
- swift filemanager excel
- swift excel read
- rag llm pdf
- deep timer
- filemanager excel read
- 타이머 어플
- swift 자간
- swift 네트워크 모듈화
- google timer 어플
- rag 기반 llm
- swift queryitem encode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함