java 读取 excel 2003 或 excel 2007

package com.common.website.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
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;

/**
* <ul>
* <li>Title:[POI基础上的Excel数据读取工具]</li>
* <li>Description: [支持Excell2003,Excell2007,自动格式化数值型数据,自动格式化日期型数据]</li>
* <li>Copyright 2009 RoadWay Co., Ltd.</li>
* <li>All right reserved.</li>
* <li>Created by [惠万鹏] [Jan 20, 2010]</li>
* <li>Midified by [modifier] [modified time]</li>
*
* <li>所需Jar包列表</li>
* <li>poi-3.6-20091214.jar</li>
* <li>poi-contrib-3.6-20091214.jar</li>
* <li>poi-examples-3.6-20091214.jar</li>
* <li>poi-ooxml-3.6-20091214.jar</li>
* <li>poi-ooxml-schemas-3.6-20091214.jar</li>
* <li>poi-scratchpad-3.6-20091214.jar</li>
* <li>xmlbeans-2.3.0.jar</li>
* <ul>
*
* @version 1.0
*/
public class POIExcelUtil
{
/** 总行数 */
private int totalRows = 0;

/** 总列数 */
private int totalCells = 0;

/** 构造方法 */
public POIExcelUtil()
{}

/**
* <ul>
* <li>Description:[根据文件名读取excel文件]</li>
* <li>Created by [Huyvanpull] [Jan 20, 2010]</li>
* <li>Midified by [modifier] [modified time]</li>
* <ul>
*
* @param fileName
* @return
* @throws Exception
*/
public List<ArrayList<String>> read(String fileName)
{
List<ArrayList<String>> dataLst = new ArrayList<ArrayList<String>>();

/** 检查文件名是否为空或者是否是Excel格式的文件 */
if (fileName == null || !fileName.matches("^.+\\.(?i)((xls)|(xlsx))$"))
{
return dataLst;
}

boolean isExcel2003 = true;
/** 对文件的合法性进行验证 */
if (fileName.matches("^.+\\.(?i)(xlsx)$"))
{
isExcel2003 = false;
}

/** 检查文件是否存在 */
File file = new File(fileName);
if (file == null || !file.exists())
{
return dataLst;
}

try
{
/** 调用本类提供的根据流读取的方法 */
dataLst = read(new FileInputStream(file), isExcel2003);
}
catch (Exception ex)
{
ex.printStackTrace();
}

/** 返回最后读取的结果 */
return dataLst;
}

/**
* <ul>
* <li>Description:[根据流读取Excel文件]</li>
* <li>Created by [Huyvanpull] [Jan 20, 2010]</li>
* <li>Midified by [modifier] [modified time]</li>
* <ul>
*
* @param inputStream
* @param isExcel2003
* @return
*/
public List<ArrayList<String>> read(InputStream inputStream,
boolean isExcel2003)
{
List<ArrayList<String>> dataLst = null;
try
{
/** 根据版本选择创建Workbook的方式 */
Workbook wb = isExcel2003 ? new HSSFWorkbook(inputStream)
: new XSSFWorkbook(inputStream);
dataLst = read(wb);
}
catch (IOException e)
{
e.printStackTrace();
}
return dataLst;
}

/**
* <ul>
* <li>Description:[得到总行数]</li>
* <li>Created by [Huyvanpull] [Jan 20, 2010]</li>
* <li>Midified by [modifier] [modified time]</li>
* <ul>
*
* @return
*/
public int getTotalRows()
{
return totalRows;
}

/**
* <ul>
* <li>Description:[得到总列数]</li>
* <li>Created by [Huyvanpull] [Jan 20, 2010]</li>
* <li>Midified by [modifier] [modified time]</li>
* <ul>
*
* @return
*/
public int getTotalCells()
{
return totalCells;
}

/**
* <ul>
* <li>Description:[读取数据]</li>
* <li>Created by [Huyvanpull] [Jan 20, 2010]</li>
* <li>Midified by [modifier] [modified time]</li>
* <ul>
*
* @param wb
* @return
*/
private List<ArrayList<String>> read(Workbook wb)
{
List<ArrayList<String>> dataLst = new ArrayList<ArrayList<String>>();

/** 得到第一个shell */
Sheet sheet = wb.getSheetAt(0);
this.totalRows = sheet.getPhysicalNumberOfRows();
if (this.totalRows >= 1 && sheet.getRow(0) != null)
{
this.totalCells = sheet.getRow(0).getPhysicalNumberOfCells();
}

/** 循环Excel的行 */
for (int r = 0; r < this.totalRows; r++)
{
Row row = sheet.getRow(r);
if (row == null)
{
continue;
}

ArrayList<String> rowLst = new ArrayList<String>();
/** 循环Excel的列 */
for (short c = 0; c < this.getTotalCells(); c++)
{
Cell cell = row.getCell(c);
String cellValue = "";
if (cell == null)
{
rowLst.add(cellValue);
continue;
}

/** 处理数字型的,自动去零 */
if (Cell.CELL_TYPE_NUMERIC == cell.getCellType())
{
/** 在excel里,日期也是数字,在此要进行判断 */
if (HSSFDateUtil.isCellDateFormatted(cell))
{
cellValue = DateUtil.get4yMdHms(cell.getDateCellValue());
}
else
{
cellValue = getRightStr(cell.getNumericCellValue() + "");
}
}
/** 处理字符串型 */
else if (Cell.CELL_TYPE_STRING == cell.getCellType())
{
cellValue = cell.getStringCellValue();
}
/** 处理布尔型 */
else if (Cell.CELL_TYPE_BOOLEAN == cell.getCellType())
{
cellValue = cell.getBooleanCellValue() + "";
}
/** 其它的,非以上几种数据类型 */
else
{
cellValue = cell.toString() + "";
}

rowLst.add(cellValue);
}
dataLst.add(rowLst);
}
return dataLst;
}

/**
* <ul>
* <li>Description:[正确地处理整数后自动加零的情况]</li>
* <li>Created by [Huyvanpull] [Jan 20, 2010]</li>
* <li>Midified by [modifier] [modified time]</li>
* <ul>
*
* @param sNum
* @return
*/
private String getRightStr(String sNum)
{
DecimalFormat decimalFormat = new DecimalFormat("#.000000");
String resultStr = decimalFormat.format(new Double(sNum));
if (resultStr.matches("^[-+]?\\d+\\.[0]+$"))
{
resultStr = resultStr.substring(0, resultStr.indexOf("."));
}
return resultStr;
}

/**
* <ul>
* <li>Description:[测试main方法]</li>
* <li>Created by [Huyvanpull] [Jan 20, 2010]</li>
* <li>Midified by [modifier] [modified time]</li>
* <ul>
*
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception
{
List<ArrayList<String>> dataLst = new POIExcelUtil()
.read("e:/Book1_shao.xls");
for (ArrayList<String> innerLst : dataLst)
{
StringBuffer rowData = new StringBuffer();
for (String dataStr : innerLst)
{
rowData.append(",").append(dataStr);
}
if (rowData.length() > 0)
{
System.out.println(rowData.deleteCharAt(0).toString());
}
}
}
}
ContextCapture系列教程(三):大疆精灵4RTK版无人机POS数据提取、处理(处理后勉强达到免相控要求) 大疆精灵 Phantom 4 RTK于2018年发布,是大疆为高精度建图与精准飞行设计的行业级无人机,在精灵4无人机外形的基础上,机身增加了RTK模块,可以实现高精度 RTK 定位导航,相机与 RTK 系统采用微秒级时间同步,可以通过app 进行航线规划飞行 阅读详情

相关推荐

基于大模型的自动驾驶智能体:Agent-Driver架构、训练与实战指南

自动驾驶系统正从传统的模块化流水线向以智能体为核心的新范式演进。其核心原理在于将车辆视为一个能够与环境持续交互的自主决策智能体,通过多模态感知、记忆管理和基于大模型的推理能力,实现对复杂交通场景的理解与应对。这一技术价值在于利用大模型的常识推理和泛化能力,有望解决传统方法在长尾场景下面临的挑战。在应用场景上,智能体驱动架构特别适合处理动态交互密集、需高层语义理解的城区驾驶、无保护转弯及突发状况应对。本文聚焦的Agent-Driver项目,正是这一方向的典型实践,它通过融合视觉、语言大模型与强化学习,构建了一

weixin_28729843的博客 529

java读取excel2003_java 读取 excel 2003 或 excel 2007

import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.text.DecimalFormat;import java.util.ArrayList;import java.util.List;import http://w...

weixin_30665313的博客 156

手把手调试Android 10 DHCP服务:从dumpsys network_stack到DhcpServer.java的实战技巧

本文详细介绍了在Android 10中调试DHCP服务的实战技巧,从使用dumpsys network_stack分析服务状态到深入DhcpServer.java源码追踪问题。文章提供了完整的工具链配置、关键调试命令和常见问题解决方案,帮助开发者高效解决DHCP服务未启动、IP分配失败等典型问题,特别适合需要深入理解Android网络架构的开发者参考。

uu89012的博客 743

java读取sheet2_java读取Excel指定sheet页或全部sheet页数据(含2003和2007版本)

java读取Excel指定sheet页或全部sheet页数据(含2003和2007版本)在http://download.youkuaiyun.com/detail/u010792467/8072015下载所需要的包如果需要excel2003和excel2007文件可以去http://download.youkuaiyun.com/detail/u010792467/8072009下载package Excel;impo...

weixin_39728213的博客 2530

深度学习|卷积神经网络

介绍卷积神经网络基本理论,包括卷积层、池化层和全连接层,并阐述LeNet卷积神经网络的构建过程。

weixin_58243219的博客 5724

机器学习——径向基函数(RBF)神经网络

目录 一、什么是基函数 二、什么是径向基函数 三、为什么RBF神经网络使用一个径向基函数作为隐含层的激活函数 四、参数训练 五、RBF网络vs BP网络和 SVM 一、什么是基函数 著名的傅里叶变换是指:n个有参(权值)的正、余弦三角函数基的和式可以等价的表示任意一个周期函数,这里的“基”和我们数学中说的坐标基或向量基含义相同,即坐标空间中任意一个向量都可以用基向量的线性和表示出来。 因此,我们引入函数空间的概念,函数空间中的每个连续函数可以表示为基函数的线性组合,就像向量空间中的每..

CHWB2580的博客 6272

java读取Excel指定sheet页或全部sheet页数据(含2003和2007版本)

package Excel; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.apache.poi.h

awenluck 1万+

linux redis7 完整的集群搭建过程

一。安装: 1.1 说明: Redis官方只提供了源码,并没有提供经过编译之后的安装包。 因此,安装Redis,要先编译、后安装。(即源码安装方式) 注意:需要联网安装 1.2 安装编译的工具: yum install gcc gcc-c++ -y 1.3 下载tar包,上传到linux服务器,解压配置环境变量 1.4 cd +解压的目录下:编译 make 注意:如果编译失败,请重新进行解压编译,...

m0_38028438的博客 719

poi 方式java 读取 excel 2003 或 excel 2007

public class POIExcelUtil{    /** 总行数 */    private int totalRows = 0;        /** 总列数 */    private int totalCells = 0;        /** 构造方法 */    public POIExcelUtil()    {}        /**     * &lt;ul&gt;   ...

JAVA 168

正弦波、方波、三角波和锯齿波信号发生器——Multisim电路仿真

调节方波信号的占空比,也就是改变输出信号的高低电平时间比例,可以设置电容不同的充放电时间来达到目的,RP2可以使得电容具有不同的充放电时间,其中二极管起到限制电流流向的作用。假设U+>U,那么输出端就达到正向饱和,电容开始充电,当电容电压大于同相输入端电压时,此时电容开始放电,由此往复,从而产生方波信号。3,正反馈支路占优势,电路开始起振并不是稳定的,振荡会不断增大,最终将导致运放饱和,输出的波形是削波失真的正弦波。通常在电路中引入负反馈,例如使用负温度系数的热敏电阻,以自动稳定增益,防止输出波形失真。

XU157303764的博客 5320

数学与纳米技术:微观世界的数学描述

《数学与纳米技术:微观世界的数学描述》 关键词:纳米技术、数学模型、微观世界、物理现象、计算模拟 摘要:本文探讨了数学在纳米技术领域的应用,从数学基础回顾、纳米技术引论,到物理现象与

AI天才研究院 1531

excel2003 java_java 读取 excel 2003 或 excel 2007

#re: java 读取 excel 2003 或 excel 20072012-10-15 22:44惠万鹏public class DateUtil{/*** * Description:[得到当前的时间]* Created by [Huyvanpull] [Oct 26, 2009]* Midified by [modifier] [modified time]* ** @return*...

weixin_39921131的博客 189

【人工智能】AI 智能体驾驭工程(Harness Engineering)全解析

OpenAI将Harness定义为让Agent能完成有用工作的系统工程,Harness Engineering则是持续设计、实现、迭代这套系统的方法论;Anthropic将其概括为「让模型真正成为可靠Agent的基础设施」;Martin Fowler/Thoughtworks则将其定义为「控制Agent各层循环的规格、质量检查与工作流指导体系」。强大的AI模型是一匹爆发力极强的烈马;Prompt Engineering是「对马喊话的技巧」,Context Engineering是「给马看的地图」;

奶爸的编程之路,也就一周冷个三天 5243

java实现excel07转03_【转】java 读取 excel 2003 或 excel 2007

packagecom.my.login;importjava.io.File;importjava.io.FileInputStream;importjava.io.IOException;importjava.io.InputStream;importjava.text.DecimalFormat;importjava.util.ArrayList;importjava.util.List;im...

weixin_34816557的博客 520

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【转】java 读取 excel 2003 或 excel 2007

package com.my.login; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.text.DecimalFormat; import java.util.Array...

weixin_30339457的博客 84

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

POI读取Excel(兼容Excel2003、Excel2007) java读取

/** * ClassName:ExcelReader.java * Author: wenbin.ji * CreateTime: Jan 28, 2011 11:16:29 AM * Description:Excel数据读取工具类,POI实现,兼容Excel2003,及Excel2007 **/ package com.company.utils; import java.io.

tong_xinglong的专栏 1500

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java读取excel2003_java读取Excel2003和Excel2007内容

java读取Excel2003和Excel2007内容并可以控制是否读取全部sheet页内容在http://download.youkuaiyun.com/detail/u010792467/8072015下载所需要的包如果需要excel2003和excel2007文件可以去http://download.youkuaiyun.com/detail/u010792467/8072009下载package Excel;im...

weixin_36444911的博客 260

POI读取Excel(兼容Excel2003、Excel2007)

Excel数据读取工具类,POI实现读取Excel2003,Excel2007

jack0511的专栏 3万+

java如何读取excel_java读取excel文件

摘自:https://www.cnblogs.com/wwzyy/p/5962076.htmlpackage com.execl;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;imp...

weixin_42367522的博客 148

java解析获取Excel中的数据--同时兼容2003及2007

java解析Excel(兼容2003及2007)刚开始从网上找了个例子使用new HSSFWorkbook(new FileInputStream(excelFile))来读取Workbook,对Excel2003以前(包括2003)的版本没有问题,但读取Excel2007时发生如下异常:org.apache.poi.poifs.filesystem.OfficeXmlFileException...

天道酬勤 224

POI读取Excel封装

对POI读取Excel进行了一个简单封装,代码如下: package com.aline.zkdm; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import o...

csdn_meng的博客 1万+

java excel 读取工具_excel读取 工具类

1 packagecn.yongche.utils;23 importjava.io.File;4 importjava.io.FileInputStream;5 importjava.io.IOException;6 importjava.io.InputStream;7 importjava.util.ArrayList;8 importjava.util.List;9 importorg.a...

weixin_32521745的博客 362
上一篇: MyBatis详解 与配置MyBatis+Spring+MySql
下一篇: oracle导入导出
goofy521
博客等级 码龄19年 2粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值