import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
public class ExcelUtil {
* 解析POI导入Excel中日期格式数据
* @param currentCell
* @return currentCellValue
public static String importByExcelForDate(Cell currentCell) {
String currentCellValue = "";
// 判断单元格数据是否是日期
if ("yyyy/mm;@".equals(currentCell.getCellStyle().getDataFormatString())
|| "m/d/yy".equals(currentCell.getCellStyle().getDataFormatString())
|| "yy/m/d".equals(currentCell.getCellStyle().getDataFormatString())
|| "mm/dd/yy".equals(currentCell.getCellStyle().getDataFormatString())
|| "dd-mmm-yy".equals(currentCell.getCellStyle().getDataFormatString())
|| "yyyy/m/d".equals(currentCell.getCellStyle().getDataFormatString())) {
if (DateUtil.isCellDateFormatted(currentCell)) {
// 用于转化为日期格式
Date d = currentCell.getDateCellValue();
DateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
currentCellValue = formater.format(d);
} else {
// 不是日期原值返回
currentCellValue = currentCell.toString();
return currentCellValue;
用POI导入excel数据时,日期格式(如2018/7/7)数据默认会被解析成double格式,解决方法如下:package com.test.util;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;import org.apache.poi.ss.userm...
个人认为,
解析
时
间单元格的值直接返回
java
.util.Date是比较好的一种方法。因为从下面的
格式
化方法
中
可以看到,好多
日期
格式
其实是我们在
java
程序或是
数据
库
中
很少使用的,所以没有必要发大功夫把
时
间单元格的值
格式
化成对应的字符串返回。
常量
中
定义的一些值的集合是Cell.getCe...
当将这些
数据
导出到
Excel
表格
中
时
,可能会出现
日期
或
时
间
格式
不正确的
问题
,例如,
日期
和
时
间被转换为带小数点的数字。
Excel
中
的
日期
格式
是特定的数字
格式
,可以使用
Java
代码将
日期
和
时
间转换为
Excel
日期
格式
,然后将其导出到
Excel
表格
中
。例如,
日期
为2021年6月23日,
时
间为12:00:00的
时
间戳表示为 44370.5,其
中
44370表示
日期
部分,0.5表示
时
间部分。 在将
日期
和
时
间导出到
Excel
表格
之前,可以使用
Java
中
的
日期
格式
化类将其
格式
化为
Excel
可以识别的
日期
格式
。
DateUtil.setParams("yyyy/MM/dd","yyyy-MM-dd");
DateUtil.format
Excel
Date(
Excel
Import
.getTime())
DateUtil
public class DateUtil {
static pri.
1.Apache
POI
简介
开发
中
经常会设计到
excel
的处理,如导出
Excel
,
导入
Excel
到
数据
库
中
,操作
Excel
等。
Apache POl简介是用
Java
编写的免费开源的跨平台的
Java
APl,Apache POl提供APl给
Java
程式对Microsoftoffice (
Excel
、WORD、Power
Poi
nt、Visio等)
格式
档案读和写的功能。POl为"Poor Obfuscation
lmplementation"的首字母缩写,意为“可怜的模糊实现”。
官方主页:h
java
导入
excel
文档
日期
时
间
格式
出错
java
.text.ParseException: Unparseable date: "44480.6633101852 ,完美
解决
问题
描述:
解决
方法:
问题
描述:
项目
中
有个需求是
导入
excel
文档,文档
中
有个
日期
时
间,开始
导入
时
总是报错,如下图所示的
错误
:
解决
方法:
在
导入
文件
时
,遍历每一行
时
加入如下方法:
public
List
<Map<String,String>> uploadFileParse(Sheet sheet,
经常见到
excel
表格
中
的
日期
和
时
间前面少了个0,比如正常应该是01/02/2016,但是在
excel
表格
中
显示就是1/2/2016;这是由于
excel
表格
中
的
时
间
格式
受操作系统
格式
的控制,在控制面板--区域和语言
中
:
java
在
读取
这些
时
间的
时
候,由于程序通常情况只支持几种常用的
格式
,比如yyyy/MM/dd或者MM/dd/yyyy等,因此要将这些奇葩的
时
间
格式
转换成通用
格式
:
//
导入
以下
POI
库
import
org.apache.
poi
.ss.usermodel.*;
import
org.apache.
poi
.xssf.usermodel.XSSFWorkbook;
import
org.springframework.web.multipart.MultipartFile;
// 定义 Controller
@Controller
public class
Excel
Controller {
@PostMapping("/
import
")
public ResponseEntity<?>
import
Excel
(@RequestParam("file") MultipartFile file) throws IOException {
//
读取
Excel
文件
Workbook workbook = new XSSFWorkbook(file.getInputStream());
Sheet sheet = workbook.getSheetAt(0);
// 处理
数据
for (Row row : sheet) {
String name = row.getCell(0).getStringCellValue();
double price = row.getCell(1).getNumericCellValue();
// 处理
数据
逻辑...
// 返回处理结果
return ResponseEntity.ok("
导入
成功!");
在这个例子
中
,我们通过 @PostMapping 注释定义了一个处理
Excel
导入
请求的控制器方法。当用户上传
Excel
文件
时
,我们可以使用 MultipartFile 类型的参数来接收文件。在方法
中
,我们使用
POI
库来
读取
Excel
文件并处理
数据
。最后,我们返回一个包含
导入
结果的 ResponseEntity。
希望这可以帮到你!