java 解析excel金额_java解析Excel(xls、xlsx两种格式)-程序员宅基地

技术标签: java 解析excel金额  

48304ba5e6f9fe08f3fa1abda7d326ab.png

package poi;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.LinkedHashMap;

import java.util.List;

import java.util.Map;

import java.util.Map.Entry;

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

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.xssf.usermodel.XSSFWorkbook;

public class Testpoi {

public static void main(String[] args) {

Workbook wb =null;

Sheet sheet = null;

Row row = null;

List> list = null;

String cellData = null;

String filePath = "D:\\test.xlsx";

String columns[] = {"name","age","score"};

wb = readExcel(filePath);

if(wb != null){

//用来存放表中数据

list = new ArrayList>();

//获取第一个sheet

sheet = wb.getSheetAt(0);

//获取最大行数

int rownum = sheet.getPhysicalNumberOfRows();

//获取第一行

row = sheet.getRow(0);

//获取最大列数

int colnum = row.getPhysicalNumberOfCells();

for (int i = 1; i

Map map = new LinkedHashMap();

row = sheet.getRow(i);

if(row !=null){

for (int j=0;j

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

map.put(columns[j], cellData);

}

}else{

break;

}

list.add(map);

}

}

//遍历解析出来的list

for (Map map : list) {

for (Entry entry : map.entrySet()) {

System.out.print(entry.getKey()+":"+entry.getValue()+",");

}

System.out.println();

}

}

//读取excel

public static Workbook readExcel(String filePath){

Workbook wb = null;

if(filePath==null){

return null;

}

String extString = filePath.substring(filePath.lastIndexOf("."));

InputStream is = null;

try {

is = new FileInputStream(filePath);

if(".xls".equals(extString)){

return wb = new HSSFWorkbook(is);

}else if(".xlsx".equals(extString)){

return wb = new XSSFWorkbook(is);

}else{

return wb = null;

}

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return wb;

}

public static Object getCellFormatValue(Cell cell){

Object cellValue = null;

if(cell!=null){

//判断cell类型

switch(cell.getCellType()){

case Cell.CELL_TYPE_NUMERIC:{

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

break;

}

case Cell.CELL_TYPE_FORMULA:{

//判断cell是否为日期格式

if(DateUtil.isCellDateFormatted(cell)){

//转换为日期格式YYYY-mm-dd

cellValue = cell.getDateCellValue();

}else{

//数字

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

}

break;

}

case Cell.CELL_TYPE_STRING:{

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

break;

}

default:

cellValue = "";

}

}else{

cellValue = "";

}

return cellValue;

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_28974985/article/details/114280323

智能推荐

介绍WPF常用布局控件_wpf 布局控件-程序员宅基地

文章浏览阅读485次,点赞2次,收藏2次。StackPanel 自身可以嵌套使用,嵌套在其他布局控件中,和其他布局控件结合使用。定义一个区域,从中可以按相对位置水平或垂直排列各个子元素,支持让元素简单地停靠在整个面板的某一条边上,然后拉伸元素以填满全部宽度或高度。EditingMode:None(初始化)、Ink(画笔)、GestureOnly(响应墨迹)、Select(选择)、EraseByPoint(橡皮)、EraseByStroke(清除线段)将子元素排列成水平或垂直的一行,如果超出将换行或者换列进行显示,子元素超出部分,会被截取被隐藏。_wpf 布局控件

springboot基于BS的社区物业管理系统_社区物业管理系统springboot-程序员宅基地

文章浏览阅读88次。开发语言:Java使用框架:spring boot前端技术:JavaScript、VUE.js(2.X)、css3数据库:MySQL 5.7数据库管理工具:Navicat或sqlyog开发工具:IDEA或Ecplise这里主要是对系统设计实现进行描述,通过系统的设计和数据库的设计,通过编码后变成了可以进行操作的界面,让一切想法变成了结果,通过文字和具体程序操作界面的截图之间的配合,可以把功能更直观的描述起来。_社区物业管理系统springboot

如何在Win7系统中批量更改文件名_批量改文件名 win7-程序员宅基地

文章浏览阅读662次。按Ctrl + A选中文件夹里所有的文件,再按一下 F2 键,此时第一个文件名会变成可编辑状态,输入任意一个名称,回车确定后所有文件都会自动改成同一名称+数字序号的形式。如下图:当然,或许你不喜欢看到数字两边的括号,但如果一个一个手动去掉,几十个文件还勉强凑合,上千个的话……怎么办?将下面的代码粘贴到一个空白的文本文件,然后把这个文本文件后缀名txt改为bat,放到图片所在文件夹下双击运行_批量改文件名 win7

hdu 2013 蟠桃记-递推-[解题报告]C++_c++ 蟠桃记-程序员宅基地

文章浏览阅读943次。蟠桃记问题描述 :喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事,你们一定都觉得这猴子太闹腾了,其实你们是有所不知:悟空是在研究一个数学问题!什么问题?他研究的问题是蟠桃一共有多少个!不过,到最后,他还是没能解决这个难题,呵呵^-^当时的情况是这样的:第一天悟空吃掉桃子总数一半多一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,_c++ 蟠桃记

基于frida框架Hook native中的函数(1)_frida onleave args-程序员宅基地

文章浏览阅读1.4w次,点赞3次,收藏14次。0x01 前言关于android的hook以前一直用的xposed来hook java层的函数,对于so层则利用adbi,但是不知道为什么adbi给我的体验并不是很好,刚好前段时间了解到frida框架支持android、ios、linux、windows、macos,而且在android设备上可以同时hook java、native十分方便,最重要的一点是不需要重启手机,于是就研究了一下0x02 ..._frida onleave args

lucene 多关键字中文搜索的问题-程序员宅基地

文章浏览阅读546次。package ch11;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.Document;import org.apache.lucene.document.Field;import org.apache.lucene.index.Ind..._lucenesearcher 多关键字中文查不出

随便推点

PostgreSQL安装, 最后提示服务项爆错, 导致安装不成功, 错误提示: Failed to start the database server-程序员宅基地

文章浏览阅读2.6k次,点赞3次,收藏7次。下载地址:Download PostgreSQL安装步骤:选择要安装的路径, 此处为你的postgres软件等安装路径,建议非C盘设置你的密码 要记住你设置的密码哦端口默认即可这里我推荐C, 也可以默认报错!然后一路Next就可以了, 但是突然进度条到了最后, 报了这个错误!意思是数据库服务项启动失败解决报错我们排查一下, win+R, 输入 services.msc找到postgres服务项发现启动也启动不了,找不到本..._failed to start the database server

Ubuntu apt-get install出现“Temporary failure resolving 'cn.archive.ubuntu.com'”_openssh-client amd64 1:8.9p1-3ubuntu0.4 temporary -程序员宅基地

文章浏览阅读2.4w次,点赞10次,收藏21次。搭建编译环境的时候,安装g++出现了如下的报错:Do you want to continue? [Y/n] yErr:1 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 libmpc3 amd64 1.0.3-1 Temporary failure resolving 'cn.archive.ubuntu.com'Err:2 ..._openssh-client amd64 1:8.9p1-3ubuntu0.4 temporary failure resolving 'cn.arch

【收藏】Matlab常用命令汇总_matlab机器学习中常用的函数命令-程序员宅基地

文章浏览阅读406次,点赞3次,收藏13次。一、常用对象操作:除了一般windows窗口的常用功能键外。1、!dir 可以查看当前工作目录的文件。 !dir& 可以在dos状态下查看。2、who 可以查看当前工作空间变量名, whos 可以查看变量名细节。3、功能键:功能键 快捷键 说明方向左键 Ctrl+B 光标向后移一个字符方..._matlab机器学习中常用的函数命令

(阅读笔记)联邦可视化框架_联邦学习结果可视化-程序员宅基地

文章浏览阅读446次。联邦可视化框架可视化模型联邦可视化框架联邦学习面临挑战参考文献联邦可视化框架是联邦学习框架在可视化领域的拓展应用,能够在不进行数据整合的情况下,数据不离开客户端本地,针对具体任务和特定场景进行加密训练,得出反映全体数据特征的可视化模型。数据的全面与否将直接影响数据可视化分析结果的准确性。可视化模型将数据信息映射成可视化元素。可视化元素组成:可视化空间、标记和视觉通道。数据由属性和值构成,属性与标记对应,值与视觉通道对应。标记是数据属性到可视化元素的映射,用以直观地表示数据的属性归类;视觉通道是_联邦学习结果可视化

基于Linux C 的ONVIF Profile T 协议服务器端实现备忘_c语言 onvif服务端-程序员宅基地

文章浏览阅读1.4k次。之前在做ONVIF Profile S的服务器端,用的是C++, 新的项目要使用H265,新的支持H265的协议Profile T已经发布(应该是2018年9月左右)。就准备用C语言重新写一套,目前主体框架和主要功能已经实现完成,记录下开发过程中注意事项。开发之前需要了解的和准备的。PC客户端方面,ONVIF Device Manager不支持Profile T和H265, 可以用来调试..._c语言 onvif服务端

matlab下 enframe分帧函数不可用_matlab中enframe函数未定义-程序员宅基地

文章浏览阅读1.2w次,点赞12次,收藏11次。matlab下可以很方便地处理语音信号,里面封装了很多函数,例如enframe等。这就需要使用Voicebox包了。但是默认情况下是,没有自动安装这个包的。 所以当我们调用enframe这些函数时,会出现,Undefined function or variable 'enframe'.这类错误。 最简单的解决方法是,下载一个voicebox语音处理包,下载地址:点这里 没_matlab中enframe函数未定义

推荐文章

热门文章

相关标签