public
List<Map>
readExcel
(InputStream inputStream) {
Workbook workbook =
null
;
Cell cell =
null
;
try
{
workbook = Workbook.getWorkbook(inputStream);
Sheet sheet = workbook.getSheet(
0
);
log.debug(
"导入文件的总行数---"
+ sheet.getRows());
if
(sheet ==
null
|| sheet.getRows() <
1
) {
return
new
ArrayList<Map>();
Map headMap =
new
HashMap();
for
(
int
i =
0
; i <
1
; i++) {
String[] strArray =
new
String[sheet.getColumns()];
for
(
int
j =
1
; j < strArray.length; j++) {
cell = sheet.getCell(j, i);
strArray[j] = cell.getContents();
Pattern p = Pattern.compile(
"\\s*|\t|\r|\n"
);
Matcher m = p.matcher(strArray[j]);
strArray[j] = m.replaceAll(
""
);
headMap.put(j, strArray[j]);
List<Map> list =
new
ArrayList<Map>();
for
(
int
i =
1
; i < sheet.getRows(); i++) {
Map map =
new
HashMap();
String[] strArray =
new
String[sheet.getColumns()];
if
(sheet.getColumns() <
1
) {
return
new
ArrayList<Map>();
for
(
int
j =
1
; j < strArray.length; j++) {
cell = sheet.getCell(j, i);
if
(cell.getType() == CellType.DATE) {
DateCell dc = (DateCell) cell;
Date date = dc.getDate();
TimeZone zone = TimeZone.getTimeZone(
"GMT"
);
SimpleDateFormat sdf =
new
SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss"
);
sdf.setTimeZone(zone);
String sDate = sdf.format(date);
strArray[j] = sDate;
}
else
{
strArray[j] = cell.getContents();
String headItem = String.valueOf(headMap.get(j));
map.put(TpcEnum.getHeadName(headItem), strArray[j]);
list.add(map);
return
list;
}
catch
(FileNotFoundException e) {
e.printStackTrace();
return
new
ArrayList<Map>();
}
catch
(BiffException e) {
e.printStackTrace();
return
new
ArrayList<Map>();
}
catch
(IOException e) {
e.printStackTrace();
return
new
ArrayList<Map>();
public static String dayToDate(int day){
Calendar calendar = new GregorianCalendar(1900,0,-1);
Date d = calendar.getTime();
Date date
问题
背景:
java
中使用poi进行
excel
导入数据时,日期格式在数据库中存放为varchar2类型。
问题
:存放数据日期
读取
数据为“44439”的数字,因判断格式类型为yyyy-mm-dd无法存放并提醒
解决办法:日期为“44439”的数字,无法使用SimpleDateFormat的parse方法进行转换。
需要引入import org.apache.poi.hssf.usermodel.HSSFDateUtil;HSSFDateUtil工具类处理
时间
Date setupTime = HSSFDa
在做导入功能时发现
excel
表格中的
时间
日期的格式默认是Y/m/d,在后台检索
excel
文件时获取到的
时间
日期的值与在表中插入的数据不符合,可能是一个五位整数,这个时候需要我们使用三元表达式。如果获取到的值与表中实际字段数据类型不符合,可以进行一下运算:(获取到的值 - 25569)*24*60*60可以获取到对应这个
时间
的
时间
戳,然后根据
时间
戳进行转换就可以解决了。环境:fastadmin框架,PHP7.4.3,PHP
Excel
-1.8。
java
导入
excel
文档 日期
时间
格式出错
java
.text.ParseException: Unparseable date: "44480.6633101852 ,完美解决
问题
描述:解决方法:
问题
描述:
项目中有个需求是导入
excel
文档,文档中有个日期
时间
,开始导入时总是报错,如下图所示的错误:
解决方法:
在导入文件时,遍历每一行时加入如下方法:
public List<Map<String,String>> uploadFileParse(Sheet sheet,
在
Java
中解析
Excel
是很多管理类系统的重要功能, 目前主要有阿里的easy
Excel
和HSSF两种开源工具,如何使用网上有大量的例子,不再赘述,我们这里看三个我亲身经历的
问题
:自动跳过空字段中文内容自动给加了拼音
时间
处理错误。本文首先分析故障现象或者原因,之后给出解决方案。
最近做
excel
导入时碰到一个
时间
时制的
问题
excel
文档里是24时制的,结果导入到数据库发现是12时制的,最后在360doc上找到了解决
问题
,这里是记录下自己的理解和处理方法。
首先:文档里的
时间
格式
导入到数据库的格式
Java
代码实现之前请确保导入了jxl.jar包及数据库连接包
jxl.Workbook rwb=null;
InputStream is
Excel
里的
时间
常见的写法有三种,一种时2021/5/12,一种时2021-05-12,一种是20210512,第一种和第三种在
Excel
里是
时间
格式,第二种是常规格式,也就是字符串。
当我们使用
java
读取
Excel
时,读单元格数据时规定了一种类型一种方法,不同类型的数据用一种方法就会报错,可以先将单元格的数据统一转为字符串
row.getCell(rowNum).setCellType(XSSFCell.CELL_TYPE_STRING);
但是当日期为2021/5/12这种格式时,转换就出了
问题
,
java
读取
excel
里面的日期会出现相差8小时的
问题
。
比如
excel
里面有一个日期是:2012-7-2 17:14:03秒,用Cell cell=readSheet.getCell(colNo, rowNo);调试该cell,发现里面的值竟然是2012-7-3 1:14:13,相差了8小时。
更奇怪的是,用String date=cell.getContents()后,得到的值...
Excel
上传导入,
Excel
里面单元格是日期的会解析出来数字,比如2020-07-11会解析为44023。使用代码处理,把解析出来的44023转换为2020-07-11。
Excel
单元格格式设置为文本格式。