关于通过前端xslx解析excel日期格式数据转化问题以及自定义时间格式YYYY-MM-DD转化

如果excel中内容如下,需要解析时间格式的内容

 

XLSX.read会默认解析为天数的时间戳字符串(从1900年算起到当前日期的天数)

 

如果想让xlsx帮我们解析时,就完成解析时间格式,只需要加上如下配置即可

 const workbook = XLSX.read(data, {
      type: "binary",
      cellDates: true,//设为true,将天数的时间戳转为时间格式
});

 

再看转换后的结果(转成了中国标准时间)

我最终想要的是转换成自己想要的时间格式,需要moment工具类

 import moment from "moment";

 

定义一个转换日期格式的方法(转成日期格式:YYYY-MM-DD)

注意的点:xlsx将excel中的时间内容解析后,会小一天

2020/11/3,xlsx会解析成  Mon Nov 02 2020 23:59:17 GMT+0800    小了43秒

当再用moment转换成日期时:

Mon Nov 02 2020 23:59:17 GMT+0800  会转成2020/11/2     所以需要在moment转换后+1天

具体方法如下:

convertExcelDateFormat: function (row, columnName) {//日期转换
	var date = row[columnName]
	if (date === undefined || date === null || date === "") {
		return null;
	}
	//非时间格式问题  返回Invalid date
	let retFormat = moment(date).format('YYYY-MM-DD');
	if (retFormat === "Invalid date"){
		return retFormat;
	}
	return moment(date).add(1, 'days').format('YYYY-MM-DD')
},

 

最终转换结果:

### 回答1: 在Python中,要将xslx中的度分秒转化为度,可以使用openpyxl库来读取和修改Excel文件,同时使用数学计算来进行度分秒转换。以下是一个示例代码: ```python import openpyxl # 打开Excel文件 wb = openpyxl.load_workbook('data.xlsx') # 获取第一个工作表 sheet = wb.active # 遍历每一行数据 for row in sheet.iter_rows(min_row=2, values_only=True): # 获取度、分、秒的值 degree = row[0] minute = row[1] second = row[2] # 将度分秒转化为度 decimal_degree = degree + minute/60 + second/3600 # 将转换后的值保存到Excel的第四列 sheet.cell(row=row[0].row, column=4, value=decimal_degree) # 保存修改后的Excel文件 wb.save('data_converted.xlsx') # 关闭Excel文件 wb.close() ``` 上述代码将会读取名为"data.xlsx"的Excel文件中的度分秒数据,并将转换后的度保存到新的Excel文件"data_converted.xlsx"的第四列。请将代码中的文件名和列号根据实际情况进行修改。 ### 回答2: 要批量将XLSX文件中的度分秒数据转化为度,可以使用Python来完成。首先需要安装openpyxl库来处理Excel文件。然后,可以按照以下步骤进行操作: 1. 导入所需的库: ```python import openpyxl from openpyxl.utils import get_column_letter ``` 2. 打开XLSX文件: ```python workbook = openpyxl.load_workbook('data.xlsx') ``` 3. 选择要处理的工作表: ```python worksheet = workbook.active ``` 4. 获取需要转换的数据列的范围: ```python column_start = 1 # 起始列索引 column_end = 5 # 结束列索引 row_start = 2 # 起始行索引 row_end = worksheet.max_row # 结束行索引 ``` 5. 遍历每个单元格,将度分秒转化为度: ```python for row in range(row_start, row_end + 1): for column in range(column_start, column_end + 1): cell = worksheet[get_column_letter(column) + str(row)] degree = cell.value.split('°')[0] minutes = cell.value.split('°')[1].split('’')[0] seconds = cell.value.split('’')[1].split('”')[0] decimal_degree = float(degree) + (float(minutes) / 60) + (float(seconds) / 3600) cell.value = decimal_degree ``` 6. 保存并关闭XLSX文件: ```python workbook.save('data_processed.xlsx') workbook.close() ``` 以上代码将会读取名为"data.xlsx"的文件中的度分秒数据,将其转化为度,并存储在名为"data_processed.xlsx"的新文件中。可以根据实际需求修改文件名、列索引和行索引。 ### 回答3: 在Python中,可以使用openpyxl库来读取和写入Excel文件,通过读取xlsx文件中的数据,然后将度分秒转化为度。 首先,我们需要安装openpyxl库。可以通过在命令行中运行以下命令来安装: ``` pip install openpyxl ``` 然后,我们可以使用以下代码来实现转换: ```python import openpyxl def dms_to_degree(degrees, minutes, seconds): # 将度分秒转化为度 degree = degrees + minutes / 60 + seconds / 3600 return degree # 打开xlsx文件 workbook = openpyxl.load_workbook('input.xlsx') # 选择要操作的Worksheet worksheet = workbook['Sheet1'] # 假设需要操作Sheet1 # 遍历度分秒数据,转换并写入新的单元格 for row in worksheet.iter_rows(min_row=2): # 从第2行开始遍历,忽略表头 degrees = row[0].value minutes = row[1].value seconds = row[2].value new_degree = dms_to_degree(degrees, minutes, seconds) # 将新的度写入第4列 row[3].value = new_degree # 保存转换后的xlsx文件 workbook.save('output.xlsx') ``` 在上述代码中,我们首先导入了`openpyxl`库,然后定义了一个`dms_to_degree`函数,该函数用于将度分秒转化为度。然后,我们打开了输入的xlsx文件,并选择要操作的Worksheet。接下来,我们遍历度分秒数据,将其转换为度,并将转换后的度写入新的单元格。最后,保存转换后的xlsx文件。 需要注意的是,代码中的`input.xlsx`是输入的xlsx文件名,`output.xlsx`是输出的转换后的xlsx文件名。根据实际情况进行更改。 希望能帮助到您!
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值