精华内容
下载资源
问答
  • java读取excel表头
    2021-07-04 13:44:16

    本文主要介绍Java中,使用EasyExcel读取Excel文件中数据时,读取Excel表头数据的方法,以及使用示例代码。
    原文地址:Java EasyExcel读取Excel表头数据的方法及示例代码

    更多相关内容
  • Java读取excel

    2021-03-09 23:22:40
    1 importjava.io.BufferedInputStream;2 importjava.io.File;3 importjava.io.FileInputStream;4 importjava.io.FileNotFoundException;5 importjava.io.IOException;6 importjava.text.DecimalFormat;7 importjava....

    1 importjava.io.BufferedInputStream;2 importjava.io.File;3 importjava.io.FileInputStream;4 importjava.io.FileNotFoundException;5 importjava.io.IOException;6 importjava.text.DecimalFormat;7 importjava.text.SimpleDateFormat;8 importjava.util.ArrayList;9 importjava.util.Arrays;10 importjava.util.Date;11 importjava.util.LinkedHashMap;12 importjava.util.List;13 importjava.util.Map;14 importjava.util.Map.Entry;15

    16 importorg.apache.poi.hssf.usermodel.HSSFCell;17 importorg.apache.poi.hssf.usermodel.HSSFDateUtil;18 importorg.apache.poi.xssf.usermodel.XSSFCell;19 importorg.apache.poi.xssf.usermodel.XSSFRow;20 importorg.apache.poi.xssf.usermodel.XSSFSheet;21 importorg.apache.poi.xssf.usermodel.XSSFWorkbook;22

    23 public classrex {24

    25 public static void main(String[] args) throwsException {26 Map map = new LinkedHashMap();27 String s = "C:\\Users\\Lenovo\\Desktop\\文档\\test.xls";28 File file = newFile(s);29 String[][] result = getData(file, 1);30 int rowLength =result.length;31 System.out.println("..." +rowLength);32 for (int i = 0; i < rowLength; i++) {33 map.put(result[i][0], new String[] { result[i][1], result[i][2] });34 System.out.println(result[i][0] + result[i][1] + result[i][2]);35 }36 //net.sf.json.JSONObject jo = net.sf.json.JSONObject.fromObject(map);37 //Map m = jo;38 //for (Entry mp : m.entrySet()) {39 //System.out.println(mp.getKey() + ":" + mp.getValue().toString());40 //}

    41

    42 }43

    44 /**

    45 *46 * 读取Excel的内容,第一维数组存储的是一行中格列的值,二维数组存储的是多少个行47 *48 *@paramfile 读取数据的源Excel49 *50 *@paramignoreRows 读取数据忽略的行数,比喻行头不需要读入 忽略的行数为151 *52 *@return读出的Excel中数据的内容53 *54 *@throwsFileNotFoundException55 *56 *@throwsIOException57 *58 */

    59

    60 public static String[][] getData(File file, intignoreRows)61

    62 throwsFileNotFoundException, IOException {63

    64 List result = new ArrayList();65 int rowSize = 0;66 BufferedInputStream in = new BufferedInputStream(newFileInputStream(file));67 //POIFSFileSystem fs = new POIFSFileSystem(in);

    68 XSSFWorkbook wb = newXSSFWorkbook(in);69 XSSFCell cell = null;70 for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) {71 XSSFSheet st =wb.getSheetAt(sheetIndex);72 //第一行为标题,不取

    73 for (int rowIndex = ignoreRows; rowIndex <= st.getLastRowNum(); rowIndex++) {74 XSSFRow row =st.getRow(rowIndex);75 if (row == null) {76 continue;77 }78

    79 int tempRowSize = row.getLastCellNum() + 1;80 if (tempRowSize >rowSize) {81 rowSize =tempRowSize;82 }83

    84 String[] values = newString[rowSize];85 Arrays.fill(values, "");86 boolean hasValue = false;87 for (short columnIndex = 0; columnIndex <= row.getLastCellNum(); columnIndex++) {88 String value = "";89 cell =row.getCell(columnIndex);90 if (cell != null) {91 //注意:一定要设成这个,否则可能会出现乱码92 //cell.setEncoding(HSSFCell.ENCODING_UTF_16);

    93 switch(cell.getCellType()) {94 caseHSSFCell.CELL_TYPE_STRING:95 value =cell.getStringCellValue();96 break;97 caseHSSFCell.CELL_TYPE_NUMERIC:98 if(HSSFDateUtil.isCellDateFormatted(cell)) {99 Date date =cell.getDateCellValue();100 if (date != null) {101 value = new SimpleDateFormat("yyyy-MM-dd")102 .format(date);103 } else{104 value = "";105 }106 } else{107 value = new DecimalFormat("0").format(cell.getNumericCellValue());108 }109 break;110 caseHSSFCell.CELL_TYPE_FORMULA:111 //导入时如果为公式生成的数据则无值

    112 if (!cell.getStringCellValue().equals("")) {113 value =cell.getStringCellValue();114 } else{115 value = cell.getNumericCellValue() + "";116 }117 break;118 caseHSSFCell.CELL_TYPE_BLANK:119 break;120 caseHSSFCell.CELL_TYPE_ERROR:121 value = "";122 break;123 caseHSSFCell.CELL_TYPE_BOOLEAN:124 value = (cell.getBooleanCellValue() == true ? "Y" : "N");125 break;126 default:127 value = "";128 }129 }130

    131 if (columnIndex == 0 && value.trim().equals("")) {132 break;133 }134

    135 values[columnIndex] =rightTrim(value);136 hasValue = true;137 }138

    139 if(hasValue) {140 result.add(values);141 }142

    143 }144

    145 }146

    147 in.close();148 String[][] returnArray = newString[result.size()][rowSize];149 for (int i = 0; i < returnArray.length; i++) {150 returnArray[i] =(String[]) result.get(i);151 }152 returnreturnArray;153

    154 }155

    156 /**

    157 *158 * 去掉字符串右边的空格159 *160 *@paramstr 要处理的字符串161 *162 *@return处理后的字符串163 *164 */

    165

    166 public staticString rightTrim(String str) {167

    168 if (str == null) {169 return "";170 }171

    172 int length =str.length();173 for (int i = length - 1; i >= 0; i--) {174 if (str.charAt(i) != 0x20) {175 break;176 }177 length--;178 }179 return str.substring(0, length);180 }181

    182 }

    展开全文
  • java 读取 excel 表格内容

    千次阅读 2021-02-26 10:23:04
    } /** * 读取excel内容 * * @param inputStream 文件 * @return Map> */ public static Map> readExcelContent(InputStream inputStream, String suffix) { getWorkbook(inputStream, suffix); Map> content = new ...

    一、添加依赖

    org.apache.poi

    poi

    3.8

    org.apache.poi

    poi-ooxml

    3.8

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    二、工具类

    根据文件后缀判断 2003 || 2007 || 2010 格式。

    import org.apache.poi.hssf.usermodel.HSSFWorkbook;

    import org.apache.poi.ss.usermodel.*;

    import org.apache.poi.xssf.usermodel.XSSFWorkbook;

    import java.io.InputStream;

    import java.time.Instant;

    import java.time.LocalDateTime;

    import java.time.ZoneId;

    import java.time.format.DateTimeFormatter;

    import java.util.HashMap;

    import java.util.Map;

    public class ExcelUtils {

    private static Workbook wb;

    private static Sheet sheet;

    private static Row row;

    private static final String EXCEL_XLS = "xls";

    private static final String EXCEL_XLSX = "xlsx";

    /**

    * 读取表头

    *

    * @param inputStream inputStream

    * @param suffix file suffix

    * @return map

    */

    public static Map readExcelTitle(InputStream inputStream, String suffix) {

    getWorkbook(inputStream, suffix);

    sheet = wb.getSheetAt(0);

    row = sheet.getRow(0);

    // 标题总列数

    int colNum = row.getPhysicalNumberOfCells();

    Map map = new HashMap<>();

    for (int i = 0; i < colNum; i++) {

    map.put(i, row.getCell(i).getStringCellValue());

    }

    return map;

    }

    /**

    * 读取excel内容

    *

    * @param inputStream 文件

    * @return Map>

    */

    public static Map> readExcelContent(InputStream inputStream, String suffix) {

    getWorkbook(inputStream, suffix);

    Map> content = new HashMap<>();

    sheet = wb.getSheetAt(0);

    // 得到总行数

    int rowNum = sheet.getLastRowNum();

    row = sheet.getRow(0);

    int colNum = row.getPhysicalNumberOfCells();

    // 正文内容应该从第二行开始,第一行为表头的标题

    for (int i = 1; i <= rowNum; i++) {

    row = sheet.getRow(i);

    int j = 0;

    Map cellValue = new HashMap<>();

    while (j < colNum) {

    String obj = getCellFormatValue(row.getCell(j));

    cellValue.put(j, obj);

    j++;

    }

    content.put(i, cellValue);

    }

    return content;

    }

    private static String getCellFormatValue(Cell cell) {

    String cellValue = "";

    if (cell != null) {

    // 判断当前Cell的Type

    switch (cell.getCellType()) {

    // 如果当前Cell的Type为NUMERIC

    case Cell.CELL_TYPE_NUMERIC:

    case Cell.CELL_TYPE_FORMULA: {

    // 判断当前的cell是否为Date

    if (DateUtil.isCellDateFormatted(cell)) {

    DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("YYYY-MM-dd HH:mm:ss");

    Instant instant = cell.getDateCellValue().toInstant();

    ZoneId zoneId = ZoneId.systemDefault();

    LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zoneId);

    cellValue = dateTimeFormatter.format(localDateTime);

    } else {

    // 如果是纯数字

    // 取得当前Cell的数值

    cellValue = String.valueOf(cell.getNumericCellValue());

    }

    break;

    }

    // 如果当前Cell的Type为STRING

    case Cell.CELL_TYPE_STRING:

    // 取得当前的Cell字符串

    cellValue = cell.getRichStringCellValue().getString();

    break;

    default:

    // 默认的Cell值

    cellValue = "";

    }

    }

    return cellValue;

    }

    private static void getWorkbook(InputStream inputStream, String suffix) {

    try {

    //2003

    if (EXCEL_XLS.equals(suffix)) {

    wb = new HSSFWorkbook(inputStream);

    //2007/2010

    } else if (EXCEL_XLSX.equals(suffix)) {

    wb = new XSSFWorkbook(inputStream);

    }

    } catch (Exception e) {

    e.printStackTrace();

    } finally {

    try {

    inputStream.close();

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    }

    }

    ---------------------

    作者:Break all

    来源:CSDN

    原文:https://blog.csdn.net/weixin_40467684/article/details/91883896

    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • 主要为大家详细介绍了java生成可变表头excel的方法,传入一个表头和数据,将数据导入到excel中,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 小编今天测试读取excel文件,并且取其中的几个单元格作为文件名称的时候,发现文件名出现了乱码,毫无疑问,肯定就是读取excel的时候,取出来就出现了乱码,如图所示 excel原单元格数据,如图所示 首先这里不是中文...

    小编今天测试读取excel文件,并且取其中的几个单元格作为文件名称的时候,发现文件名出现了乱码,毫无疑问,肯定就是读取excel的时候,取出来就出现了乱码,如图所示

    5ff735cf2e01caccfe3fef1a327e2401.png

    excel原单元格数据,如图所示

    6423ba9cc2d189f06806efee0b8e4dd6.png

    首先这里不是中文乱码的问题,反而是英文的时候出现乱码,

    然后查阅了许多网上的解决办法,最终最好的解决办法是,在读取excel 的时候,

    加上WorkbookSettings,代码如下所示

    WorkbookSettings workbookSettings = new WorkbookSettings();

    workbookSettings.setEncoding("ISO-8859-1");

    Workbook wb= Workbook.getWorkbook(new File("D:\\excel\\111.xls"),workbookSettings);

    完整测试代码如下

    package com.jxlgnc.demo.util;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.FileNotFoundException;

    import java.io.IOException;

    import java.io.InputStream;

    import java.util.ArrayList;

    import java.util.List;

    import jxl.Cell;

    import jxl.Sheet;

    import jxl.Workbook;

    import jxl.read.biff.BiffException;

    import jxl.WorkbookSettings;

    /**

    * Created by yjl on 2018-07-18.

    */

    public class GetExcelInfo {

    /*public static void main(String[] args) {

    GetExcelInfo obj = new GetExcelInfo();

    // 这个是excel数据文件

    File file = new File("E:/111.xls");

    //obj.readExcel(file);

    try {

    //得到所有数据

    List> allData=readExcel2(file);

    System.out.println(allData);

    } catch (Exception e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }*/

    // 去读Excel的方法readExcel,该方法的入口参数为一个File对象

    public static void readExcel(File file) {

    try {

    // 创建输入流,读取Excel

    InputStream is = new FileInputStream(file.getAbsolutePath());

    // jxl提供的Workbook类

    //Workbook wb = Workbook.getWorkbook(is);//这样会出现乱码,改成下面的这种形式

    WorkbookSettings workbookSettings = new WorkbookSettings();

    workbookSettings.setEncoding("ISO-8859-1");

    Workbook wb= Workbook.getWorkbook(is,workbookSettings);

    // Excel的页签数量

    int sheet_size = wb.getNumberOfSheets();

    for (int index = 0; index < sheet_size; index++) {

    // 每个页签创建一个Sheet对象

    Sheet sheet = wb.getSheet(index);

    // sheet.getRows()返回该页的总行数

    for (int i = 0; i < sheet.getRows(); i++) {

    // sheet.getColumns()返回该页的总列数

    for (int j = 0; j < sheet.getColumns(); j++) {

    String cellinfo = sheet.getCell(j, i).getContents();

    System.out.println(cellinfo);

    }

    }

    }

    } catch (FileNotFoundException e) {

    e.printStackTrace();

    } catch (BiffException e) {

    e.printStackTrace();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    /**

    * 获取数据

    * @param file

    * @return

    * @throws Exception

    */

    public static List> readExcel2(File file) throws Exception {

    // 创建输入流,读取Excel

    InputStream is = new FileInputStream(file.getAbsolutePath());

    // jxl提供的Workbook类

    //Workbook wb = Workbook.getWorkbook(is);//这样会出现乱码,改成下面的这种形式

    WorkbookSettings workbookSettings = new WorkbookSettings();

    workbookSettings.setEncoding("ISO-8859-1");

    Workbook wb= Workbook.getWorkbook(is,workbookSettings);

    // 只有一个sheet,直接处理

    //创建一个Sheet对象

    Sheet sheet = wb.getSheet(0);

    // 得到所有的行数

    int rows = sheet.getRows();

    // 所有的数据

    List> allData = new ArrayList>();

    // 越过第一行 它是列名称

    for (int j = 1; j < rows; j++) {

    List oneData = new ArrayList();

    // 得到每一行的单元格的数据

    Cell[] cells = sheet.getRow(j);

    for (int k = 0; k < cells.length; k++) {

    oneData.add(cells[k].getContents().trim());

    }

    // 存储每一条数据

    allData.add(oneData);

    // 打印出每一条数据

    //System.out.println(oneData);

    }

    return allData;

    }

    }

    感谢原作者的分享,让技术人能够更快的解决问题

    展开全文
  • 下载的时候可以指定文件名,或者单独一个sheet页标注javaexcel 表头读取该怎么写,就是表中表头不在第一行,要一行一行去搜索,代码该怎么写啊! 急求使用 POI这样的库,逐行判断,也不难、也不麻烦~~~~~~~...
  • 使用java读取excel单元格时有个空格怎么都去不掉,trim(),replaceAll("")都去不掉,打印该空格的ASCII编码为12288,最终去掉该空格解决问题。 char space1 = 32; //半角空格 char space2 = 160; //全角空格 char ...
  • java批量读取Excel表格

    2016-08-10 14:14:47
    用于批量读取excel表格。工作写时非常好用。2003-2010都支持。
  • 主要介绍了Java实现读取及生成Excel文件的方法,结合实例形式分析了java通过引入第三方jar包poi-3.0.1-FINAL-20070705.jar实现针对Excel文件的读取及生成功能,需要的朋友可以参考下
  • java读取excel表格数据

    千次阅读 2021-08-11 20:10:34
    java读取excel文件有很多的应用场景,如读取数据后入库,或者做数据分析,预处理等等,那么如何做到读取文件呢,下面看具体步骤。 笔者使用环境是IDEA2020.1,jdk8. 2 导入依赖 <dependency> <groupId&...
  • Java导出Excel 复杂表头

    2021-03-12 17:42:08
    一种是直接用代码控制表头==== 简单的表头 一种是直接使用模板直接添加数据就可以=== 复杂的表头 依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</...
  • 1、代码使用groovy写的,在java中使用可能会出现报错; 2、使用jar包忘记复制了,用的是org.apache.poi的jar包; @Test public void test8() { //测试表格数据,表格放在src目录下 File file = new File("D:\\...
  • java注解实现通用Excel中文表格转实体对象列表,支持中文表头,在Excel数据导入使用的通用工具类,代码简洁优雅
  • 在使用java的时候,希望从excel中读取到一些单元格的数据,供大家参考,具体内容如下1.Java读取的excel的api这里用到了一个叫jxl的api如下:... //java读取excel表使用的类import jxl.Cell; //java读...
  • Java 动态表头 多sheet
  • Java读取Excel成List对象数组

    千次阅读 2021-04-17 20:52:30
    Java给我们提供了操纵文件的很多工具类,本文主要是使用POI操纵Excel文件。 1 介绍POI包的一些概念 Workbook: 这就是一个工作Excel文件。XSSFWorkbook 和 HSSFWorkbook classes都实现这个接口 XSSFWorkbook: 针对 ...
  • java读取Excel内容添加到list集合里面去 package com.changan.contract.newsign.utils; import com.changan.contract.xqht.entity.ProcessAudit; import com.google.common.collect.Lists; import lombok.extern....
  • 使用POI读取Excel中的数据,使用Java反射将数据映射到实体中,有一个不好的地方是就是表头的第一行需要定义为属性名,还没有想到如何解决,先这样把 来看,思路 首先将表头存在一个List中,在读数据的时候,获取...
  • Java 关于 Excel导出
  • 这篇文章主要为大家详细介绍了java生成可变表头excel的方法,传入一个表头和数据,将数据导入到excel中,具有一定的参考价值,感兴趣的小伙伴们可以参考一下本文为大家分享了java生成可变表头excel的具体步骤,供...
  • Java读取Excel层次结构

    2021-05-13 09:04:42
    参考地址:https://bbs.csdn.net/topics/390793224?depth_1-utm_source=distribute.pc_relevant.none-task-discussion_topic-BlogCommendFromBaidu-32&utm_source=distribute.pc_relevant.none-task-discussion_...
  • -- jxl 操作excel --> <dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifactId>jxl</artifactId> <version>2.6.10</version> </dependency ...
  • java导出excel多重表头

    2018-02-05 01:59:01
    后台代码对多重表头要怎么排列?比如星期一下面还有早上,中午晚上,再下面才是动态数据! ![图片说明](https://img-ask.csdn.net/upload/201802/05/1517795905_167671.png)
  • Java通过POI读取Excel遍历数据,根本word模板批量生成word文档,demo可运行,可根据需求修改
  • 关于怎么读取这里不多作介绍,本篇文章主要讲解读取过程中 有关 读取行数不正确的问题以及解决方法。0x001:创建excel模板时,不管你有几行几列,需要注意一点,“不在模板行 及 模板列 范围内的 请不要去动”通俗...
  • Java读取Excel并解析文本(并格式化输出)

    万次阅读 多人点赞 2015-05-06 20:00:48
    java解析excel并批量入库
  • java读取Excel

    2021-03-04 04:15:44
    package ...import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import jxl.Cell;import jxl.Sheet;impor...
  • 一、添加依赖 org.apache.poi poi 3.8 org.apache.poi poi-ooxml 3.8 ...根据文件后缀判断 2003 || 2007 || 2010 格式。...import org.apache.poi.hssf.usermodel.HSSFWorkbook;...import org.apache.poi....import java.i

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,744
精华内容 2,697
关键字:

java读取excel表头