精华内容
下载资源
问答
  • 这篇文章主要介绍了Java解析Excel内容的方法,实例分析了java解析excel文件的技巧,需要的朋友可以参考下。提示下我这是使用了springboot框架开发。 jra包支持:poi-ooxml.jra,poi-scratchpad.jra, commons-...

    这篇文章主要介绍了Java解析Excel内容的方法,实例分析了java解析excel文件的技巧,需要的朋友可以参考下。提示下我这是使用了springboot框架开发。

    jra包支持:poi-ooxml.jra,poi-scratchpad.jra, commons-beanutils.jra。

    具体实现方法如下:

    package com.lsm.app;

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.lang.reflect.InvocationTargetException;
    import java.sql.Date;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.LinkedHashMap;
    import java.util.List;
    import java.util.Locale;
    import java.util.Map;
    import java.util.Map.Entry;

    import org.apache.commons.beanutils.BeanUtils;
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.DateUtil;
    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;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;

    @SpringBootApplication
    public class APP {
        public static void main(String[] args) {
         SpringApplication.run(APP.class, args);

        //调用
         Map<String, Product> map=   readExcel("C://Users//ecomsh//Desktop//product3.xlsx");
         Iterator<Entry<String, Product>> it=  map.entrySet().iterator();
         while(it.hasNext()){
             Entry<String,Product> next=  it.next();
             System.out.println(next.getKey()+"--"+next.getValue());
         }
           
        }
        public static Map<String, Product> readExcel(String filePath){
            Map<String, Product> map=new HashMap<String, Product>();
         
            try {
                File file=new File(filePath);
                InputStream  inputStream = new FileInputStream(file);
              //老版本POI是使用这种方式创建Workbook的要自己手动去判断类型,新版本中可以使用WorkbookFactory,它能自动根据文档的类型打开一个Excel  
                //Workbook wb = new HSSFWorkbook(new FileInputStream("D:/5月业务定制对账文件汇总.xls"));  
                Workbook   wb= WorkbookFactory.create(inputStream);
                inputStream.close();
                //读取Excel内容
                Map<String, List> excelMap = readExcel(wb, null);
                List reList = excelMap.get("Sheet1");
                List rowRecord=null;
                if(notNull(reList)){
                    for(int i=1;i<reList.size();i++){ //跳过表头
                        //System.out.println("正在导入行:    " + i );
                        Product product=new Product();
                        if(notNull(reList.get(i))){
                             rowRecord = (List) reList.get(i);
                            for(int j=0;j<rowRecord.size();j++){
                               
                                Object cellValue =  rowRecord.get(j);
                                if(isNull(cellValue)) continue;
                                switch (j) {
                                case 1:
                                    product.setSeqno(cellValue.toString());
                                    break;
                                case 2:

                    SimpleDateFormat sdf2= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

              //product.setPartno(sdf2.format(cellValue.toString())) 这种会报String不能转换成date型                                    //excel文件中日期读取出来进行转换String类型
               SimpleDateFormat sdf1= new SimpleDateFormat("EEE MMM dd HH:mm:ss z                                     yyyy", Locale.ENGLISH);
                                    product.setPartno(sdf2.format(sdf1.parse(cellValue.toString())));

                                    break;
                                case 3:
                                    product.setMaterialdesccn(cellValue.toString());
                                    break;
                                case 4:
                                    product.setMaterialdescen(cellValue.toString());
                                    break;
                                default:
                                    break;
                                }
                            }
                        }
                        if(!map.containsKey(i)){
                            map.put(rowRecord.get(0)+"", product);
                        }
                    }
                }
            } catch (Exception e) {
                
                e.printStackTrace();
            }
          return map;
        }

    //读取excel文件内容
        public static Map<String, List> readExcel(Workbook wb,
            Class<? extends IExcelModel> modelClass)
            throws InstantiationException, IllegalAccessException, InvocationTargetException {
            Map<String, List> excelMap = new LinkedHashMap();
            int numOfSheets = wb.getNumberOfSheets();// 获取几个Sheet表
            for (int i = 0; i < numOfSheets; i++) {
                List reList = new ArrayList();
                    String sheetName = wb.getSheetName(i);//每个sheet名字
                    Sheet sheet = wb.getSheetAt(i);//获取每个sheet
                    int s = sheet.getFirstRowNum();//起始行数下标默认为0 不包过标题内容
                    int e = sheet.getLastRowNum();//最后一行下标
                    if (s == 0 && e == 0) {
                    continue;
                }
                String[] fields = null;
                if (modelClass != null) {
                    fields = modelClass.newInstance().getExcelFieldList();
                }
                int length = sheet.getRow(sheet.getFirstRowNum()).getLastCellNum();//获取总列数
                for (int j = s; j <= e; j++) {//遍历行数
                    Row r = sheet.getRow(j);//获取每一行
                    if (r == null) {//如果哪一行为空就跳过,继续下一行
                    continue;
                    }
                    List colList = new ArrayList();
                    IExcelModel model = null;
                    if (fields != null) {
                        model = modelClass.newInstance();
                    }
                length = Math.max(length, r.getLastCellNum());
                for (int cn = 0; cn < length; cn++) {//遍历每行的列数
                            /*RETURN_NULL_AND_BLANK 丢失的单元格返回为null,空白单元格将返回正常值。
                             * RETURN_BLANK_AS_NULL 丢失的单元格返回为null,空格为空。
                             * CREATE_NULL_AS_BLANK 为缺失的细胞创建一个新的空白单元格。空白单元格返回正常
                             * */
                    Cell cell = r.getCell(cn, Row.RETURN_BLANK_AS_NULL);//获取对应位置的值
                    if (fields != null) {
                        if (cn < fields.length) {
                            String field = fields[cn];
                            BeanUtils.setProperty(model, field,getCellValue(cell).toString());
                        }
                    } else {
                        colList.add(getCellValue(cell));
                    }
                }
                if (fields != null) {
                    reList.add(model);
                    } else {
                    reList.add(colList);
                    }
                }
                excelMap.put(sheetName, reList);
                }
            return excelMap;
            }
        // POI 中的单元格CellType类型装换
        public static Object getCellValue(Cell cell) {
            Object ob = null;
            if (cell == null) {
                return ob;
            }
            switch (cell.getCellType()) {
                case Cell.CELL_TYPE_STRING:
                    ob = cell.getRichStringCellValue().getString();
                    break;
                case Cell.CELL_TYPE_NUMERIC://对数值类型的处理
                    if (DateUtil.isCellDateFormatted(cell)) {//对时间类型的处理
                        ob =cell.getDateCellValue();
                    } else {
                        // TODO
                        cell.setCellType(Cell.CELL_TYPE_STRING);
                        ob = cell.getStringCellValue();
                    }
                    break;
                case Cell.CELL_TYPE_BOOLEAN:
                    ob = cell.getBooleanCellValue();
                    break;
                case Cell.CELL_TYPE_FORMULA:
                    ob = cell.getCellFormula();
                    break;
            }
            return ob;
        }
        public static boolean notNull(Object object) {
            if (object instanceof List<?>) {
                return notNullAndZero((List<?>) object);
            } else if (object instanceof String) {
                return notNullAndEmpty((String) object);
            } else {
                return null != object;
            }
        }
        public static boolean notNullAndEmpty(String string) {
            return null == string || "".equals(string) ? false : true;
        }

        public static boolean notNullAndZero(List<?> list) {
            return null == list || list.size() == 0 ? false : true;
        }
        public static boolean isNull(Object object) {
            return !notNull(object);
        }
    }
     

    打印结果如下:

    3--Product [seqno=1000-00201, partno=2017-12-29 10:07:45, materialdesccn=Cylinder Head Gasket, materialdescen=0.54]
    2--Product [seqno=1000-00087, partno=2017-12-29 10:07:45, materialdesccn=Straight Hose, materialdescen=0.05]
    10--Product [seqno=1000-00370, partno=2017-12-29 10:07:45, materialdesccn=Cylinder Head Hood Shim, materialdescen=0.05]
    1--Product [seqno=1000-00081, partno=2017-12-29 10:07:45, materialdesccn=12.894, materialdescen=740]
    7--Product [seqno=1000-00341, partno=2017-12-29 10:07:45, materialdesccn=Exhaust Manifold Gasket, materialdescen=0.03]
    6--Product [seqno=1000-00333, partno=2017-12-29 10:07:45, materialdesccn=Oil Pan Shim, materialdescen=4.54]
    5--Product [seqno=1000-00321, partno=2017-12-29 10:07:45, materialdesccn=D cylinder sleeve seal hydrosphere YC6105ZLQ, materialdescen=0.01]
    4--Product [seqno=1000-00256, partno=2017-12-29 10:07:45, materialdesccn=Bracket (Rear Cover), materialdescen=24.39]
    9--Product [seqno=1000-00369, partno=2017-12-29 10:07:45, materialdesccn=Cylinder Head Hood Shim, materialdescen=0.05]
    8--Product [seqno=1000-00342, partno=2017-12-29 10:07:45, materialdesccn=Exhaust Pipe Outlet Gasket, materialdescen=0.4]

     

    转载于:https://my.oschina.net/lsm97103/blog/1596613

    展开全文
  • node koa解析excel表格 .xlsx .xls

    千次阅读 2018-12-20 15:42:13
    node koa解析excel表格数据使用到的插件co-busboyxlsx安装完成之后,下面开始我们的搬运代码工作 ...解析excel文件,这里只收录如何解析excel文件,得到里面的数据 安装 npm i xlsx --save 安装完成之后,下面开...

    使用到的插件

    co-busboy

    1. 作用
      用于node koa1 解析流文件
    2. 安装
      npm i co-busboy -save

    xlsx

    1. 作用
      解析excel文件,这里只收录如何解析excel文件,得到里面的数据
    2. 安装
      npm i xlsx --save

    安装完成之后,下面开始我们的搬运代码工作

    一、接收流文件

    // 引入中间件co-busboy
    var parse = require('co-busboy');
    // 前端上传使用的是formData格式传流文件,this
    let file =yield parse(this)
    

    二、解析excel
    有两种解析方式,一种是直接解析流文件一种是将流存于本地,解析存储的本地文件
    (1)直接解析流文件(接收流+解析流)

    const xlsx = require('xlsx');
    var parse = require('co-busboy');
    function* batchInsertNbtsEntrustRecord() {
    	let file =yield parse(this);
        const workbook = yield getFile(file); //解析excel
        const sheetNames = workbook.SheetNames; // 返回 ['sheet1', ...]
        const datas = [];
        for (const sheetName of sheetNames) {
    		  const worksheet = workbook.Sheets[sheetName];
    		  const data = xlsx.utils.sheet_to_json(worksheet);//生成一个对象数组
    		  datas.push(data);//datas就是我们解析出来的一个数组对象,数据格式[[sheet1],[sheet2],[sheet3]]
    	 }
    	 
    }
    
    // 封装一个解析函数,stream是前端上传的一个文件流
    function getFile(stream) {
        return new Promise(function (result) {
            var buffers = [];
            stream.on('data', function(data) { buffers.push(data); });
            stream.on('end', function() {
                var buffer = Buffer.concat(buffers);
                var workbook = xlsx.read(buffer, {type:"buffer"});
                result(workbook);
              });
        });
    }
    

    (2)将流存于本地,解析存储的本地文件(接收流+解析流)

    var parse = require('co-busboy');
    const xlsx = require('xlsx');
    const fs = require('fs');
    const path = require('path');
    const downPath = path.resolve(__dirname, '../../fileUpload');//会将流文件存储在fileUpload文件夹里面
    function* batchInsertNbtsEntrustRecord() {
    	 const file = yield parse(this); // file 上传的只读流
    	 const reader = fs.createReadStream(file); // 创建可读流
    	 const ext = file.filename.split('.').pop(); // 获取上传文件扩展名
    	 const filePath = `${downPath}/${file.filename}.${ext}`;
    	 
    	 const upStream = fs.createWriteStream(filePath); // 创建可写流
    	 const getRes = yield getFile(reader, upStream); //等待数据存储完成
    	 const datas = []; //可能存在多个sheet的情况
    	 if (!getRes) { //存储没有问题
    	  const workbook = xlsx.readFile(filePath);//解析excel
    	  const sheetNames = workbook.SheetNames; // 返回 ['sheet1', ...]
    	  for (const sheetName of sheetNames) {
    	   const worksheet = workbook.Sheets[sheetName];
    	   const data = xlsx.utils.sheet_to_json(worksheet);
    	   datas.push(data);
    	  }
    }
    
    // 封装一个解析函数,stream是前端上传的一个文件流
    function getFile (reader, upStream) {
    	 return new Promise(function (result) {
    		  let stream = reader.pipe(upStream); // 可读流通过管道写入可写流
    		  stream.on('finish', function (err) {
    		   result(err);
    		  });
    	 });
    }
    

    #注意事项
    excel里面如果是时间12:12:23,则需要做以下处理
    moment(new Date(1900, 0, value - 1)).format(‘HH:mm:ss’)
    moment为解析时间的插件,http://momentjs.cn/

    展开全文
  • 如何使用 阅读具有出色的库的工作簿。 var XLSX = require ( 'xlsx' ) ; var workbook = XLSX . readFile ( 'test.xlsx' ) ; // change some cell value workbook . Sheets [ 'Sheet1' ] . A1 . v
  • 在企业实际需求中,很多数据来源是Excel,我们需要将Excel文件解析出来,...其中poi是解析xls格式的,poi-ooxml是解析xlsx格式的 <!-- POI,excel解析相关 --> <dependency> <groupId>org.ap...

    在企业实际需求中,很多数据来源是Excel,我们需要将Excel文件解析出来,变成代码方便操作的Json数据。以下是案例步骤和相关代码。

    一、在pom.xml中导入相关依赖。

    其中poi是解析xls格式的,poi-ooxml是解析xlsx格式的

    <!-- POI,excel解析相关 -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.17</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.17</version>
    </dependency>
    
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.62</version>
    </dependency>
    

    二、主要API

      1.import org.apache.poi.ss.usermodel.Workbook,对应Excel文档;

      2.import org.apache.poi.hssf.usermodel.HSSFWorkbook,对应xls格式的Excel文档;

      3.import org.apache.poi.xssf.usermodel.XSSFWorkbook,对应xlsx格式的Excel文档;

      4.import org.apache.poi.ss.usermodel.Sheet,对应Excel文档中的一个sheet;

      5.import org.apache.poi.ss.usermodel.Row,对应一个sheet中的一行;

      6.import org.apache.poi.ss.usermodel.Cell,对应一个单元格。

    三、具体代码

    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    import org.apache.poi.hssf.usermodel.HSSFDateUtil;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
    import org.apache.poi.poifs.filesystem.POIFSFileSystem;
    import org.apache.poi.ss.usermodel.*;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    
    
    public class ExcelResolveUtils {
        private final String XLSX = ".xlsx";
        private final String XLS=".xls";
    
        public static void main(String[] args) {
            ExcelResolveUtils utils = new ExcelResolveUtils();
            File f1 = new File("D:/test.xlsx");
            try {
                JSONArray jsonArray = utils.readExcel(f1);
                System.out.println(jsonArray);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 获取Excel文件(.xls和.xlsx都支持)
         * @param file
         * @return  解析excle后的Json数据
         * @throws IOException
         * @throws FileNotFoundException
         * @throws InvalidFormatException
         */
        public JSONArray readExcel(File file) throws Exception{
            int res = checkFile(file);
    
            if (res == 0) {
                System.out.println("File not found");
            }else if (res == 1) {
                return readXLSX(file);
            }else if (res == 2) {
                return readXLS(file);
            }else{
                System.out.println("暂不支持该文件格式");
            }
            JSONArray array = new JSONArray();
            return array;
        }
        /**
         * 判断File文件的类型
         * @param file 传入的文件
         * @return 0-文件为空,1-XLSX文件,2-XLS文件,3-其他文件
         */
        public int checkFile(File file){
            if (file==null) {
                return 0;
            }
            String flieName = file.getName();
            if (flieName.endsWith(XLSX)) {
                return 1;
            }
            if (flieName.endsWith(XLS)) {
                return 2;
            }
            return 3;
        }
    
        /**
         * 读取XLSX文件
         * @param file
         * @return
         * @throws IOException
         * @throws InvalidFormatException
         */
        public JSONArray readXLSX(File file) throws InvalidFormatException, IOException{
            Workbook book = new XSSFWorkbook(file);
            Sheet sheet = book.getSheetAt(0);
            return read(sheet, book);
        }
    
        /**
         * 读取XLS文件
         * @param file
         * @return
         * @throws IOException
         * @throws FileNotFoundException
         */
        public JSONArray readXLS(File file) throws FileNotFoundException, IOException{
            POIFSFileSystem poifsFileSystem = new POIFSFileSystem(new FileInputStream(file));
            Workbook book = new HSSFWorkbook(poifsFileSystem);
            Sheet sheet = book.getSheetAt(0);
            return read(sheet, book);
        }
    
        /**
         * 解析数据
         * @param sheet 表格sheet对象
         * @param book 用于流关闭
         * @return
         * @throws IOException
         */
        public JSONArray read(Sheet sheet,Workbook book) throws IOException{
            int rowStart = sheet.getFirstRowNum();	// 首行下标
            int rowEnd = sheet.getLastRowNum();	// 尾行下标
            // 如果首行与尾行相同,表明只有一行,直接返回空数组
            if (rowStart == rowEnd) {
                book.close();
                return new JSONArray();
            }
            // 获取第一行JSON对象键
            Row firstRow = sheet.getRow(rowStart);
            int cellStart = firstRow.getFirstCellNum();
            int cellEnd = firstRow.getLastCellNum();
            Map<Integer, String> keyMap = new HashMap<Integer, String>();
            for (int j = cellStart; j < cellEnd; j++) {
                keyMap.put(j,getValue(firstRow.getCell(j), rowStart, j, book, true));
            }
            // 获取每行JSON对象的值
            JSONArray array = new JSONArray();
            for(int i = rowStart+1; i <= rowEnd ; i++) {
                Row eachRow = sheet.getRow(i);
                JSONObject obj = new JSONObject();
                StringBuffer sb = new StringBuffer();
                for (int k = cellStart; k < cellEnd; k++) {
                    if (eachRow != null) {
                        String val = getValue(eachRow.getCell(k), i, k, book, false);
                        sb.append(val);		// 所有数据添加到里面,用于判断该行是否为空
                        obj.put(keyMap.get(k),val);
                    }
                }
                if (sb.toString().length() > 0) {
                    array.add(obj);
                }
            }
            book.close();
            return array;
        }
    
        /**
         * 获取每个单元格的数据
         * @param cell 单元格对象
         * @param rowNum 第几行
         * @param index 该行第几个
         * @param book 主要用于关闭流
         * @param isKey 是否为键:true-是,false-不是。 如果解析Json键,值为空时报错;如果不是Json键,值为空不报错
         * @return
         * @throws IOException
         */
        public String getValue(Cell cell,int rowNum,int index,Workbook book,boolean isKey) throws IOException{
    
            // 空白或空
            if (cell == null || cell.getCellTypeEnum()== CellType.BLANK ) {
                if (isKey) {
                    book.close();
                    throw new NullPointerException(String.format("the key on row %s index %s is null ", ++rowNum,++index));
                }else{
                    return "";
                }
            }
    
            // 0. 数字 类型
            if (cell.getCellTypeEnum() == CellType.NUMERIC) {
                if (HSSFDateUtil.isCellDateFormatted(cell)) {
                    Date date = cell.getDateCellValue();
                    DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    return df.format(date);
                }
                String val = cell.getNumericCellValue()+"";
                val = val.toUpperCase();
                if (val.contains("E")) {
                    val = val.split("E")[0].replace(".", "");
                }
                return val;
            }
    
            // 1. String类型
            if (cell.getCellTypeEnum() == CellType.STRING) {
                String val = cell.getStringCellValue();
                if (val == null || val.trim().length()==0) {
                    if (book != null) {
                        book.close();
                    }
                    return "";
                }
                return val.trim();
            }
    
            // 2. 公式 CELL_TYPE_FORMULA
            if (cell.getCellTypeEnum() == CellType.FORMULA) {
                return cell.getStringCellValue();
            }
    
            // 4. 布尔值 CELL_TYPE_BOOLEAN
            if (cell.getCellTypeEnum() == CellType.BOOLEAN) {
                return cell.getBooleanCellValue()+"";
            }
    
            // 5.	错误 CELL_TYPE_ERROR
            return "";
        }
    
    }
    

    四、运行结果

    代码运行前保证在D盘下有一个test.xlsx文档,不然报文件找不到异常。

    代码测试:

        public static void main(String[] args) {
            ExcelResolveUtils utils = new ExcelResolveUtils();
            File f1 = new File("D:/test.xlsx");
            try {
                JSONArray jsonArray = utils.readExcel(f1);
                System.out.println(jsonArray);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    

    要解析的Excel:

    代码执行后的结果:

    五、公众号

    获取更多技术方面的文章,欢迎关注我的微信公众号:

    二维码

    展开全文
  • 其中,xls格式的需要使用HSSFWorkbook类来解析xlsx格式的需要使用XSSFWorkbook格式来解析。 那么如何整合二者呢。 代码目录: 1.传入文件名称,获取workbook对象; 2.使用workbook对象操作excel表格; 3....

    随手写个简单摘要:

        POI大家都不陌生,经常拿来解析excel表格。

        其中,xls格式的需要使用HSSFWorkbook类来解析,xlsx格式的需要使用XSSFWorkbook格式来解析。

       那么如何整合二者呢。

    代码目录:

    1.传入文件名称,获取workbook对象;

    2.使用workbook对象操作excel表格;

    3.辅助代码;

    一、获取workbook对象<重要代码>

    	/**
    	 * xls/xlsx都使用的Workbook
    	 *
    	 * @param fileName
    	 * @return
    	 * @author 吕小布  2018年10月26日
    	 */
    	public static Workbook readExcel(String fileName){
    		Workbook wb = null;
            if(fileName==null){
                return null;
            }
            String extString = fileName.substring(fileName.lastIndexOf("."));
            InputStream is = null;
            try {
                is = new FileInputStream(fileName);
                if(".xls".equals(extString)){
                    return wb = new HSSFWorkbook(is);
                }else if(".xlsx".equals(extString)){
                    return wb = new XSSFWorkbook(is);
                }
                
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return wb;
    	}

    二、使用workbook对象操作excel表格

    /**
    	 * Description: 解析excel简单例子
    	 *
    	 * @param fileName
    	 * @author 吕小布  2018年11月7日
    	 */
    	public void analyzeDemo(String fileName){
    
    		try {
    			Workbook wb = readExcel(fileName); // 获得excel文件对象workbook
    			
    			Sheet s = wb.getSheetAt(0); // 获取指定工作表<这里获取的是第一个>
    			
    			//循环行  sheet.getPhysicalNumberOfRows()是获取表格的总行数
    			for (int i = 0; i < s.getPhysicalNumberOfRows(); i++) {
    				System.out.println("第"+(i+1)+"行内容:");
    				
    				Row row = s.getRow(i); // 取出第i行  getRow(index) 获取第(index+1)行
    
    				for (int j = 0;j < row.getPhysicalNumberOfCells(); j++) {  // getPhysicalNumberOfCells() 获取当前行的总列数
    					String value1 = getCellFormatValue(row.getCell(0)); //getCell 获取单元格中的内容
    					System.out.print(value1+"");
    				}
    				
    				System.out.println("");
    			}
    
    		} catch (IndexOutOfBoundsException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}

    三、辅助代码,对单元格的内容进行format<可有可无>

    /**
    	 * format表格内容
    	 *
    	 * @param cell
    	 * @return
    	 * @author 吕小布  2018年10月26日
    	 */
    	public static String getCellFormatValue(Cell cell){
            String cellValue = "";
            if(cell!=null){
                //判断cell类型
                switch(cell.getCellType()){
                case Cell.CELL_TYPE_NUMERIC:{
                    cellValue = String.valueOf(cell.getNumericCellValue());
                    break;
                }
                case Cell.CELL_TYPE_STRING:{
                    cellValue = cell.getRichStringCellValue().getString();
                    break;
                }
                default:
                    cellValue = "";
                }
            }
            return cellValue;
        }

    就此,关键代码全部结束,其余的地方得靠自己啦。

    如果有书写错误的地方,请各位客官及时指出,以免误人子弟,遗臭万年。
    你好,我叫吕小布

     

    展开全文
  • js-xlsx 读取Excel解析

    2020-09-28 11:11:04
    近期公司开始做绩效,某一天上午 HR 妹纸发了份 Excel 模板过来,让我下发给...那么如何收集每个人的数据呢?当然最简单的方式就一个个打开组内成员的绩效表,然后一个个统计,不过对于这种方式,我是拒绝的。作为一个
  • ,编译时但产生了诸如 error LNK2001: 无法解析的外部符号 "private: void __thiscall QColor::invalidate(void)" (?invalidate@QColor@@AAEXXZ) 这样的错误,我估计是不是没有包含QT的一些基础库所至,但对QT不熟,...
  • 主要给大家介绍了关于C#仪器数据文件如何解析Excel文件的方法,包括解析xls、xlsx两种格式,文中介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
  • 最近工作中遇到一个需求,大致需求就是将Excel文件在导入时解析为json格式转换数据结构再传输给后台。这方面的库比较少,比较主流的是js-xlsx,官网地址为sheetjs官网,但是文档都写得不太清楚,坑也比较多,这里我...
  • 这段代码可以帮到你大多数时候jszip.js没有工作,所以在你的js代码中包含xlsx.full.min.js。Html代码onchange="angular.element(this).scope().ExcelExport(event)"/>使用Javascript$scope.ExcelExport=function...
  • parse_excel.py from openpyxl import * from openpyxl.styles import * from requestconfig.use_config import * class ParsExcel(object): ... self.wb = load_workbook(xlsx_dir) self.sheetnames = self.wb.shee
  • js read excel xlsx

    2020-07-25 17:00:35
    需要的库:sheetjs github地址https://github.com/SheetJS/sheetjs <!DOCTYPE html>...js如何解析Excel文件</title> </head> <body> <input type="file" onchange="impexc.
  • 最近有一个要求,我的一个项目中解析Excel文件(与xls/xlsx扩展)在浏览器(使用JavaScript当然)。所以我在网上看了一下,发现了这2个有用的库: js-xls js-xlsx 让我们看看他们是如何工作的。 兼容性 ...
  • 自动化测试中我们存放数据无非是使用文件或者数据库,那么文件可以是csv,xlsx,xml,甚至是txt文件,通常excel文件往往是我们的首选,无论是编写测试用例还是存放测试数据,excel都是很方便的。那么今天我们就把...
  • 自动化测试中我们存放数据无非是使用文件或者数据库,那么文件可以是csv,xlsx,xml,甚至是txt文件,通常excel文件往往是我们的首选,无论是编写测试用例还是存放测试数据,excel都是很方便的。那么今天我们就把...
  • <p>I am trying to make an HTML form so my users can upload xlsx ...I focus more on the SimpleXLSX <a href="https://www.phpclasses.org/package/6279-PHP-Parse-and-retrieve-data-from-Excel-XLS-files....
  • go导出.xlsx格式的Excel文件 import "github.com/tealeg/xlsx" //生成操作日志Excel文件并返回给前端,具体逻辑实现 func GetOperationLogExcel(ctx *bm.Context, data []database.OperationLog) error { style := ...
  • Python在文件解析方面有很多丰富的三方模块,接下来我们就看如何使用Python解析以下几种常见格式的文件。 1. Excel文件解析 标准的Excel文件其实就相当于一张表,有表头和对应的数据。一般常见的Excel文件都以.xls、...
  • 请问大家 如何用ext的上传控件 :UploadDialog 上传并解析Excel内容写入数据库? UploadDialog只能上传 难道要先上传到服务器 然后服务器再去解析么?不能用流的形式写到服务器直接解析么? 希望做过的兄弟给个...
  • Vue中如何导入并读取Excel数据 一、导入并读取Excel功能从整体上来说两种方式,一是前端解析文件后将数据返回给后端,另一种是前端直接将Excel文档返回后台,由后台进行处理。使用哪种方法需要根据具体业务需求,...
  • Python如何读取excel单元格的缩进

    万次阅读 2017-07-26 11:48:05
    有些excel中有这种利用缩进表示层次结构的方式,那么python如何解析它们呢? 工具:openpyxl 代码如下:#!/usr/bin/env python # -*- coding: utf-8 -*-from openpyxl import load_workbookwb = load_workbook('a...
  • node-xlsx不仅可以解析Excel文件从中取出数据,还能将数据生成Excel文件,因此我们可以将云数据库里面的数据取出来之后保存为Excel文件,然后再将保存的Excel文件上传到云存储。 1、安装node-xlsx npm install ...
  • java操作excel,搞懂它

    2021-01-26 12:52:26
    java利用poi相关的jar包可以读取到excel并解析,解析后可以把得到的excel里面的数据持久化到数据库或者其他地方,问题的关键在于如何解析excel,用到的是poi技术,poi技术说白了就是几个操作excel相关的jar包,你...
  • Spring Batch 写Excel数据

    2020-04-30 17:39:21
    本文通过示例介绍如何通过Spring Batch写数据至Excel。 1. Apache POI介绍 Apache poi 是解析微软office文档的Java工具库,支持解析Excel,Word,PowerPoint甚至Visio. 本文聚焦Excel及当前最新版本xlsx,POI提供低...
  • 使用 Datagrip 导入 Excel 数据表

    千次阅读 2020-11-15 16:09:59
    大部分程序猿使用的数据库管理工具基本都是 Navicat 管理工具,但我个人觉得还是 jetbrains 家族的 DataGrip 好用, 界面好看,操作界面和旗下其他IDE...小贴士: 由于格式问题 datagrip 无法正确解析xlsx,解析x..
  • 本篇文章主要讲解如何通过前端读取excel文件中的数据,并且展示在地图上。需要用到一个插件js-xlsx,可以github上下载到里面内附了使用说明文档https://github.com/SheetJS/js-xlsx 一、读取excel 我这里准备了一份...
  • winform使用Microsoft.Office....3、学会如何使用Newtonsoft.Json.dll动态链接库,会使用JsonConvert.*生成和解析数据; 4、学会简单的使用winform页与html,js交互,并且引用bootstrap,对界面自适应会有很大帮助。

空空如也

空空如也

1 2 3 4 5
收藏数 85
精华内容 34
关键字:

excel如何解析xlsx