GH/utils/format_converter.py

77 lines
2.2 KiB
Python
Raw Normal View History

import pandas as pd
import json
import csv
def excel_to_csv(excel_path, csv_path):
"""Excel转CSV"""
try:
df = pd.read_excel(excel_path)
df.to_csv(csv_path, index=False, encoding='utf-8-sig')
return True
except Exception as e:
raise Exception(f"Excel转CSV失败: {str(e)}")
def csv_to_excel(csv_path, excel_path):
"""CSV转Excel"""
try:
df = pd.read_csv(csv_path)
df.to_excel(excel_path, index=False)
return True
except Exception as e:
raise Exception(f"CSV转Excel失败: {str(e)}")
def json_to_excel(json_path, excel_path):
"""JSON转Excel"""
try:
with open(json_path, 'r', encoding='utf-8') as f:
data = json.load(f)
# 如果是列表格式的JSON
if isinstance(data, list):
df = pd.DataFrame(data)
else:
# 如果是字典格式转换为单行DataFrame
df = pd.DataFrame([data])
df.to_excel(excel_path, index=False)
return True
except Exception as e:
raise Exception(f"JSON转Excel失败: {str(e)}")
def excel_to_json(excel_path, json_path):
"""Excel转JSON"""
try:
df = pd.read_excel(excel_path)
data = df.to_dict('records')
with open(json_path, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
return True
except Exception as e:
raise Exception(f"Excel转JSON失败: {str(e)}")
def csv_to_json(csv_path, json_path):
"""CSV转JSON"""
try:
df = pd.read_csv(csv_path)
data = df.to_dict('records')
with open(json_path, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
return True
except Exception as e:
raise Exception(f"CSV转JSON失败: {str(e)}")
def json_to_csv(json_path, csv_path):
"""JSON转CSV"""
try:
with open(json_path, 'r', encoding='utf-8') as f:
data = json.load(f)
df = pd.DataFrame(data)
df.to_csv(csv_path, index=False, encoding='utf-8-sig')
return True
except Exception as e:
raise Exception(f"JSON转CSV失败: {str(e)}")