Excel 테이블을 Java에서 json으로 변환하는 구현 방법
本篇文章主要介绍了Java实现excel表格转成json的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
今天有个朋友问我,有没有excel表格到处json的方法,在网上找到了好几个工具,都不太理想,于是根据自己的需求,自己写了一个工具。
功能代码
package org.duang.test; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import net.sf.json.JSONArray; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.FormulaEvaluator; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; /** * excel表格转成json * @ClassName: Excel2JSONHelper * @Description:TODO(这里用一句话描述这个类的作用) * @author LiYonghui * @date 2017年1月6日 下午4:42:43 */ public class Excel2JSONHelper { //常亮,用作第一种模板类型,如下图 private static final int HEADER_VALUE_TYPE_Z=1; //第二种模板类型,如下图 private static final int HEADER_VALUE_TYPE_S=2; public static void main(String[] args) { File dir = new File("e:\\2003.xls"); Excel2JSONHelper excelHelper = getExcel2JSONHelper(); //dir文件,0代表是第一行为保存到数据库或者实体类的表头,一般为英文的字符串,2代表是第二种模板, JSONArray jsonArray = excelHelper.readExcle(dir, 0, 2); System.out.println(jsonArray.toString());; } /** * * 获取一个实例 */ private static Excel2JSONHelper getExcel2JSONHelper(){ return new Excel2JSONHelper(); } /** * 文件过滤 * @Title: fileNameFileter * @Description: TODO(这里用一句话描述这个方法的作用) * @param: * @author LiYonghui * @date 2017年1月6日 下午4:45:42 * @return: void * @throws */ private boolean fileNameFileter(File file){ boolean endsWith = false; if(file != null){ String fileName = file.getName(); endsWith = fileName.endsWith(".xls") || fileName.endsWith(".xlsx"); } return endsWith; } /** * 获取表头行 * @Title: getHeaderRow * @Description: TODO(这里用一句话描述这个方法的作用) * @param: @param sheet * @param: @param index * @param: @return * @author LiYonghui * @date 2017年1月6日 下午5:05:24 * @return: Row * @throws */ private Row getHeaderRow(Sheet sheet, int index){ Row headerRow = null; if(sheet!=null){ headerRow = sheet.getRow(index); } return headerRow; } /** * 获取表格中单元格的value * @Title: getCellValue * @Description: TODO(这里用一句话描述这个方法的作用) * @param: @param row * @param: @param cellIndex * @param: @param formula * @param: @return * @author LiYonghui * @date 2017年1月6日 下午5:40:28 * @return: Object * @throws */ private Object getCellValue(Row row,int cellIndex,FormulaEvaluator formula){ Cell cell = row.getCell(cellIndex); if(cell != null){ switch (cell.getCellType()) { //String类型 case Cell.CELL_TYPE_STRING: return cell.getRichStringCellValue().getString(); //number类型 case Cell.CELL_TYPE_NUMERIC: if (DateUtil.isCellDateFormatted(cell)) { return cell.getDateCellValue().getTime(); } else { return cell.getNumericCellValue(); } //boolean类型 case Cell.CELL_TYPE_BOOLEAN: return cell.getBooleanCellValue(); //公式 case Cell.CELL_TYPE_FORMULA: return formula.evaluate(cell).getNumberValue(); default: return null; } } return null; } /** * 获取表头value * @Title: getHeaderCellValue * @Description: TODO(这里用一句话描述这个方法的作用) * @param: @param headerRow * @param: @param cellIndex 英文表头所在的行,从0开始计算哦 * @param: @param type 表头的类型第一种 姓名(name)英文于实体类或者数据库中的变量一致 * @param: @return * @author LiYonghui * @date 2017年1月6日 下午6:12:21 * @return: String * @throws */ private String getHeaderCellValue(Row headerRow,int cellIndex,int type){ Cell cell = headerRow.getCell(cellIndex); String headerValue = null; if(cell != null){ //第一种模板类型 if(type == HEADER_VALUE_TYPE_Z){ headerValue = cell.getRichStringCellValue().getString(); int l_bracket = headerValue.indexOf("("); int r_bracket = headerValue.indexOf(")"); if(l_bracket == -1){ l_bracket = headerValue.indexOf("("); } if(r_bracket == -1){ r_bracket = headerValue.indexOf(")"); } headerValue = headerValue.substring(l_bracket+1, r_bracket); }else if(type == HEADER_VALUE_TYPE_S){ //第二种模板类型 headerValue = cell.getRichStringCellValue().getString(); } } return headerValue; } /** * 读取excel表格 * @Title: readExcle * @Description: TODO(这里用一句话描述这个方法的作用) * @param: @param file * @param: @param headerIndex * @param: @param headType 表头的类型第一种 姓名(name)英文于实体类或者数据库中的变量一致 * @author LiYonghui * @date 2017年1月6日 下午6:13:27 * @return: void * @throws */ public JSONArray readExcle(File file,int headerIndex,int headType){ List<Map<String, Object>> lists = new ArrayList<Map<String, Object>>(); if(!fileNameFileter(file)){ return null; }else{ try { //加载excel表格 WorkbookFactory wbFactory = new WorkbookFactory(); Workbook wb = wbFactory.create(file); //读取第一个sheet页 Sheet sheet = wb.getSheetAt(0); //读取表头行 Row headerRow = getHeaderRow(sheet, headerIndex); //读取数据 FormulaEvaluator formula = wb.getCreationHelper().createFormulaEvaluator(); for(int r = headerIndex+1; r<= sheet.getLastRowNum();r++){ Row dataRow = sheet.getRow(r); Map<String, Object> map = new HashMap<String, Object>(); for(int h = 0; h<dataRow.getLastCellNum();h++){ //表头为key String key = getHeaderCellValue(headerRow,h,headType); //数据为value Object value = getCellValue(dataRow, h, formula); if(!key.equals("") && !key.equals("null") && key != null ){ map.put(key, value); } } lists.add(map); } } catch (Exception e) { e.printStackTrace(); } } JSONArray jsonArray = JSONArray.fromObject(lists); return jsonArray; } }
excel表格模板类型和调用方式
第一种 :用括号把实体类变量名称或者数据库字段名称括起来
调用方法如下:
//表格的名称为2003.xls File file= new File("e:\\2003.xls"); Excel2JSONHelper excelHelper = getExcel2JSONHelper(); //字母表头为在第1行,第1种模板类型 JSONArray jsonArray = excelHelper.readExcle(file, 1, 1);
第二种: 实体类变量名称或者数据库字段另起一行,如下两张图都行
调用方法如下:
//表格的名称为2003.xls File file= new File("e:\\2003.xls"); Excel2JSONHelper excelHelper = getExcel2JSONHelper(); //字母表头为在第1行,第2种模板类型 JSONArray jsonArray = excelHelper.readExcle(file, 1, 2);
//表格的名称为2003.xls File file= new File("e:\\2003.xls"); Excel2JSONHelper excelHelper = getExcel2JSONHelper(); //字母表头为在第2行,第2种模板类型 JSONArray jsonArray = excelHelper.readExcle(file, 2, 2);
jsonArray打印的结果
复制代码 代码如下:
[{"index":"1","name":"李逵","jobNum":"10004","dept":"开发部","job":"android工程师"}, {"index":"2","name":"宋江","jobNum":"10001","dept":"总裁办","job":"总裁"}]
위 내용은 Excel 테이블을 Java에서 json으로 변환하는 구현 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

인쇄해야 하는 파일을 열 때 인쇄 미리보기에서 어떤 이유로 인해 테이블 프레임 선이 사라진 것을 발견할 수 있습니다. 이러한 상황이 발생하면 인쇄에도 나타나는 경우 제때에 처리해야 합니다. file 이런 질문이 있으시면 에디터에 가입하여 다음 강좌를 배워보세요. Excel에서 표를 인쇄할 때 테두리 선이 사라지면 어떻게 해야 하나요? 1. 아래 그림과 같이 인쇄할 파일을 엽니다. 2. 아래 그림과 같이 필요한 콘텐츠 영역을 모두 선택합니다. 3. 아래 그림과 같이 마우스 오른쪽 버튼을 클릭하고 "셀 서식" 옵션을 선택합니다. 4. 아래 그림과 같이 창 상단의 "테두리" 옵션을 클릭하세요. 5. 아래 그림과 같이 왼쪽 선 스타일에서 가는 실선 패턴을 선택합니다. 6. '외부 테두리'를 선택하세요.

엑셀은 일상적인 사무에서 데이터를 처리하는 데 자주 사용되며, "필터" 기능을 사용해야 하는 경우가 많습니다. Excel에서 "필터링"을 수행하도록 선택하면 동일한 열에 대해 최대 2개의 조건만 필터링할 수 있습니다. 그러면 Excel에서 동시에 3개 이상의 키워드를 필터링하는 방법을 알고 계십니까? 다음으로 여러분에게 보여드리겠습니다. 첫 번째 방법은 필터에 조건을 점진적으로 추가하는 것입니다. 세 가지 적격 세부정보를 동시에 필터링하려면 먼저 그 중 하나를 단계별로 필터링해야 합니다. 처음에는 조건에 따라 "Wang"이라는 직원을 먼저 필터링할 수 있습니다. 그런 다음 [확인]을 클릭한 후 필터 결과에서 [현재 선택 항목을 필터에 추가]를 선택하세요. 단계는 다음과 같습니다. 마찬가지로 다시 별도로 필터링을 수행합니다.

일상 업무나 공부를 하다 보면 다른 사람의 엑셀 파일을 복사해서 열어서 내용을 추가하거나 다시 편집하고 저장하는 경우가 가끔 있는데, 엑셀을 잘 몰라서 가끔 호환성 확인 대화 상자가 뜨는 경우가 있습니다. 소프트웨어, 일반 모드로 변경할 수 있나요? 따라서 아래에서 편집자가 이 문제를 해결하기 위한 자세한 단계를 알려드릴 것입니다. 함께 배워보겠습니다. 마지막으로 저장하는 것을 잊지 마세요. 1. 워크시트를 열고 그림과 같이 워크시트 이름에 추가 호환성 모드를 표시합니다. 2. 이 워크시트에서는 내용을 수정하고 저장하면 항상 호환성 검사 대화상자가 팝업되는데, 그림과 같이 이 페이지를 보는 것이 매우 번거롭습니다. 3. Office 버튼을 클릭하고 다른 이름으로 저장을 클릭한 다음

소프트웨어 공부에 있어서 우리는 엑셀을 사용하는데 익숙해져 있는데, 편리할 뿐만 아니라 실제 업무에 필요한 다양한 형식을 충족할 수 있고, 엑셀은 사용하기에 매우 유연하며, 읽기에 편리합니다. 오늘은 모두를 위한 엑셀 읽기 모드 설정 위치를 가져왔습니다. 1. 컴퓨터를 켠 다음 Excel 응용 프로그램을 열고 대상 데이터를 찾습니다. 2. Excel에서 읽기 모드를 설정하는 방법에는 두 가지가 있습니다. 첫 번째: Excel에는 Excel 레이아웃에 배포된 편리한 처리 방법이 많이 있습니다. 엑셀 오른쪽 하단에 읽기 모드 설정 바로가기가 있습니다. 십자 표시 패턴을 찾아 클릭하면 십자 표시 오른쪽에 작은 입체 표시가 있습니다. .

1. PPT를 열고 엑셀 아이콘을 삽입해야 하는 페이지로 페이지를 넘깁니다. 삽입 탭을 클릭합니다. 2. [개체]를 클릭하세요. 3. 다음과 같은 대화상자가 나타납니다. 4. [파일에서 생성]을 클릭한 후 [찾아보기]를 클릭하세요. 5. 삽입할 엑셀 표를 선택하세요. 6. 확인을 클릭하면 다음 페이지가 나타납니다. 7. [아이콘으로 표시]를 체크하세요. 8. 확인을 클릭합니다.

안녕하세요 여러분, 오늘 저는 여러분과 다시 튜토리얼을 공유하기 위해 왔습니다. Excel 스프레드시트에서 루트 번호를 여는 방법을 알고 있나요? 가끔 엑셀 표를 사용할 때 루트 기호를 사용하는 경우가 많습니다. 베테랑에게는 루트 계정을 개설하는 것이 쉬운 일이지만 초보 학생에게는 Excel에서 루트 계정을 개설하는 것이 어렵습니다. 오늘은 엑셀에서 루트번호를 여는 방법에 대해 자세히 알아보겠습니다. 이 수업은 매우 귀중한 수업입니다. 학생 여러분, 잘 들으십시오. 단계는 다음과 같습니다. 1. 먼저 컴퓨터에서 Excel 테이블을 연 다음 새 통합 문서를 만듭니다. 2. 다음으로 빈 워크시트에 다음 내용을 입력합니다. (그림과 같이) 3. 다음으로 [도구 모음]에서 [함수 삽입]을 클릭합니다.

HTML로 Excel 데이터를 읽는 방법: 1. JavaScript 라이브러리를 사용하여 Excel 데이터를 읽습니다. 2. 서버측 프로그래밍 언어를 사용하여 Excel 데이터를 읽습니다.

며칠 전 사촌이 와서 엑셀을 이용해서 열심히 데이터를 작성했는데 나중에 동료들이 수정해서 보내줬다고 하소연을 하더군요. 그의 상사는 꾸중을 들었습니다. 정말 답답합니다. 어떤 사람들은 당신을 좋아하지 않고 고의로 당신을 벌하고 싶어합니다. 학교를 떠나 사회에 들어가면 점점 더 많은 사람들이 당신을 뒤흔드는 것을 알게 될 것입니다. 사촌에게 몇마디 위로의 말과 함께 조언도 해주었습니다. 앞으로 이런 일이 다시 일어날까 두렵다면 엑셀 양식에 비밀번호를 설정해 다른 사람이 열 수 없도록 하세요. 너. 네티즌 여러분, 귀하의 Excel 스프레드시트가 다른 사람에 의해 비밀리에 수정될까 봐 걱정된다면 비밀번호도 설정해야 합니다. 엑셀 비밀번호 양식에 비밀번호를 설정하는 방법은 무엇입니까? 저와 함께 알아보세요! 1.
