HSQLDB의 text table에 Excel 읽기 추가
그 중에서texttable는 데이터 저장 방식을 확장했다. 이것은 csv 파일을 연결할 수 있고 이 테이블에 대한 모든 조작은 이 csv 파일에 나타난다.그러나 그는 excel을 데이터 원본으로 지원하지 않는다.
나는 이 기능을 추가했다.사고방식은 다음과 같다.
csv를 연결하려면 다음과 같이 써야 합니다.
SET TABLE table_1 SOURCE "data.csv;encoding=GB2312;"
데이터를csv table_1. 이렇게 하면 select, insert, update는 항상 이 csv에 나타난다. 이 사고방식에 따라 나의 목표는 다음과 같다.
SET TABLE table_1 SOURCE "data.xls;encoding=GB2312"
xls 파일을 정의합니다. 시스템도 처리할 수 있다면 얼마나 좋을까요!
만약에 시스템이 진정으로 처리하기 전에 검사를 하고 xls라고 판단되면 POI로 csv 파일로 바꾸고 이 csv 파일을 연결합니다.
최종적으로 찾았습니다. org.hsqldb.persist.TextCache에서 이러한 작업을 처리하여 다음을 수행합니다.
protected void initParams(Database database,String baseFileName) throws HsqlException {
안에 코드가 추가되었는데,
if(fileName.endsWith(ExcelToCsv.EXT_XLS)) {
try {
ExcelToCsv etc = new ExcelToCsv(fileName,tableprops.getProperty(ExcelToCsv.ROW_COUNT),tableprops.getProperty(ExcelToCsv.COL_COUNT));
fileName = etc.parse();
} catch (IOException e) {
// TODO error handling
e.printStackTrace();
}
}
그 중에서 ExcelToCsv는 제가 추가한 클래스입니다. Excel을 읽고 csv로 쓰는 데 사용됩니다.
실제 사용에서는 Excel 파일에 몇 개의 열과 몇 개의 줄을 제공해야 합니다(몇 줄에 대해 사전에 확정할 수 없으면 충분한 수를 줄 수 있습니다). 즉, 실제 사용에서 사용:
SET TABLE table_1 SOURCE "data.xls;encoding=GB2312;rowcount=200;colcount=11"
그중, 정의,table_1 이 테이블은 Excel에서 11열을 추출하고 최대 200줄을 추출합니다. (실제 Excel 파일에는 157줄만 있습니다.)
첨부 파일은 HSQLDB1.8.0.10 버전을 기반으로 이 기능을 추가한jar 및 관련 원본 코드입니다.
결함은 다음과 같습니다.
1. 위의 메커니즘을 바탕으로 set시에만 한 번 처리하면 이후table_1의 어떤 조작도 excel 파일에 반영되지 않고 csv에만 반영되지만 제 고객은 select만 있고 업데이트,delete가 없기 때문에 이 기능은 저에게 큰 도움이 되지 않습니다.
2. 일부 exception의 처리가 완벽하지 않다.
어느 맏이가 시간이 있으면 좀 보완해 주시오
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Excel Grep toolExcel Grep tool ■히나가타 ■ 시트 구성 ExcelGrep.cls...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.