voxmax 发表于 2023-7-14 08:31

帮媳妇用GPT跑excel数据分析--(一)

昨天媳妇给我提了个对比excel数据库需求,我发现自己的代码水准不好,于是问了一下GPT,给出了相应的解决方案,但是我不太懂其中的某个参数如何调整
precision=0.01这个参数在对比字符串的时候我知道怎么调整比较好。
详细代码如下 ,大家可以拿去,我自己跑数据没问题,跑出来的数据还是不理想。


import openpyxl

def find_and_mark_data(filename, sheetname, column, start_row, end_row, fuzzy_match=False, precision=0.01, output_filename="output.xlsx"):
    # 打开Excel文件
    workbook = openpyxl.load_workbook(filename)
   
    # 选择工作表
    worksheet = workbook
   
    # 获取指定列的数据
    column_data = ]
   
    # 创建用于排序的元组列表
    data_tuples = []
    for i, data in enumerate(column_data):
      if data:
            data_tuples.append((i, data))
   
    # 根据相似性进行排序
    sorted_data = sorted(data_tuples, key=lambda x: x, reverse=True)
   
    # 重新排列数据
    for i, (index, _) in enumerate(sorted_data):
      if i != index:
            # 获取当前行数据
            row_data = ]
            
            # 删除当前行
            worksheet.delete_rows(index+start_row)
            
            # 在指定位置插入当前行数据
            worksheet.insert_rows(start_row+i, 1)
            for j, cell_value in enumerate(row_data, start=1):
                worksheet.cell(row=start_row+i, column=j).value = cell_value
   
    # 保存修改后的Excel文件
    workbook.save(output_filename)

# 示例用法
filename = 'g:/test1.xlsx'
sheetname = 'sheet1'
column = 'A'# 修改为要遍历的列的字母
start_row = 100# 指定起始行
end_row = 500# 指定结束行
fuzzy_match = True
precision = 0.01
output_filename = 'output.xlsx'# 输出文件名

find_and_mark_data(filename, sheetname, column, start_row, end_row, fuzzy_match, precision, output_filename)


86618513 发表于 2023-7-14 09:13

Kls673M 发表于 2023-7-14 09:24

好像你的代码没做什么呢, 你好像只是用了排序重组功能吧,这个表格不是自带吗?
你用表格把数据做成图形估计更直观点

mokson 发表于 2023-7-14 09:33

antpliot 发表于 2023-7-14 10:09

这个是不是用Excel本身的功能方便一些

JackLei 发表于 2023-7-14 10:10

Excel连接数据库直接用vb也可以跑,py感觉有点多余了
Sub Query()
    Dim Conn As Object, Rst As Object
    Dim strConn As String, strSQL As String
    Dim i As Integer, PathStr As String
    Set Conn = CreateObject("ADODB.Connection")
    Set Rst = CreateObject("ADODB.Recordset")
    PathStr = "C:\Users\Desktop\销售表.xlsx"   '设置工作簿的完整路径和名称
    t = ActiveSheet.Name
    Select Case Application.Version * 1    '设置连接字符串,根据版本创建连接
    Case Is <= 11
      strConn = "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=excel 8.0;Data source=" & PathStr
    Case Is >= 12
      strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & PathStr & ";Extended Properties=""Excel 12.0;HDR=YES"";"""
    End Select
    '设置SQL查询语句
    strSQL = "select * from [销售表$]"
    Conn.Open strConn    '打开数据库链接
    Set Rst = Conn.Execute(strSQL)    '执行查询,并将结果输出到记录集对象
    'ThisWorkbook.Sheets.Add after:=Worksheets("数据源") '添加一个新工作表在第一工作后
    For Each ws In Worksheets
      If ws.Name = "提数结果" Then ws.Delete
    Next
    Sheets.Add.Name = "提数结果"
    With Sheets("提数结果")
      .Cells.Clear
      .Tab.Color = 255
      For i = 0 To Rst.Fields.Count - 1    '填写标题
            .Cells(1, i + 1) = Rst.Fields(i).Name
      Next i
      .Range("A2").CopyFromRecordset Rst
'      .Cells.EntireColumn.AutoFit'自动调整列宽
    End With
    Rst.Close    '关闭数据库连接
    Conn.Close
    Set Conn = Nothing
    Set Rst = Nothing
End Sub

lfglfg11 发表于 2023-7-14 10:21

直接VB跑不就完事了,这么简单的玩意……

zyming 发表于 2023-7-14 10:53

整的好啊

iawyxkdn8 发表于 2023-7-14 11:17

如果只是对比,excel本身就能满足要求,而且很方便,写这一堆代码,我都搞好了吧!

wangsz 发表于 2023-7-14 11:37

挺有创意的,支持原创!
页: [1] 2 3
查看完整版本: 帮媳妇用GPT跑excel数据分析--(一)