我感觉自己越来越离不开AI了,尤其是2025年以来。虽然我只用到目前主流AI的冰山一角,并且只用了生成式的大型语言模型,具体的说,是免费版的Chatgpt和Deepseek,但即便是这样也给我的生活和工作带来了极大的便利。

我用AI的场景主要有三个:

  1. 写报告;
  2. 做表格;
  3. 改代码。

写报告

在我的日常工作中,其实很少会遇到写报告的场景,领导只是偶尔会让我起草个初稿,奈何本人文字能力实在很差,经常连个思路都没有。

于是我干脆把素材罗列在一起,然后让Deepseek帮我写:

“请你参照这篇文章:(以前的模板,或者别的模板),结合这些内容:(素材),帮我写一篇报告。”

也可以再加上一些限定,比如你是谁谁谁,这个报告要在什么场景用,用公文语气,多少字之类的。

不到3分钟,初稿就完成了,再安排AI改改细节,自己再调调格式,也许就能混过去了吧。

做表格

我本来也不太怕做表格,甚至可以说我还蛮擅长做表格、整理数据的,即便遇到很繁琐的事情,我也可以尝试使用Python的pandas或openpyxl来编程解决。

只不过我这种“擅长”,在AI面前还是太小儿科了。

以往处理大量重复劳动时,我会在Jupyter里面使用代码慢慢调试,但最近我发现还不如让ChatGPT给我一段VBA。比如这个场景:

我有一个excel工作簿,里面有很多工作表,除了“汇总”之外,其他都是明细表。明细表的E列第7行到最后一行都是会计科目长名称,比如“管理费用_研发费用_人员人工费_短期薪酬_工资_基本工资”,请帮我遍历所有表,批量改为短名称,取最后一个符号“_”后面的字符,比如“基本工资”

ChatGPT很快给出了VBA代码:

Sub ConvertAccountNameToShort()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim r As Long
    Dim fullName As String
    Dim pos As Long

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    For Each ws In ThisWorkbook.Worksheets
        ' 跳过汇总表
        If ws.Name <> "汇总" Then
            
            ' 找到 E 列最后一行
            lastRow = ws.Cells(ws.Rows.Count, "E").End(xlUp).Row
            
            ' 从第 7 行开始处理
            For r = 7 To lastRow
                fullName = Trim(ws.Cells(r, "E").Value)
                
                ' 只处理非空且包含 _
                If fullName <> "" And InStr(fullName, "_") > 0 Then
                    ' 找最后一个 _
                    pos = InStrRev(fullName, "_")
                    ' 取最后一个 _ 后的内容
                    ws.Cells(r, "E").Value = Mid(fullName, pos + 1)
                End If
            Next r
            
        End If
    Next ws

    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True

    MsgBox "所有明细表科目名称已转换完成!", vbInformation
End Sub

并且还非常贴心地给出了使用方式:

使用方法(一步一步)
1.Alt + F11 → 打开 VBA 编辑器
2.菜单 插入 → 模块
3.粘贴上面的代码
4.关闭编辑器
5.Alt + F8
6.选择 ConvertAccountNameToShort
7.点击 运行

从我点开ChatGPT开始,总用时不超过3分钟,以往这个时候我都还没在Python中导入excel。

即便真的遇到了VBA无法处理的时候,也可以让ChatGPT帮我写Python代码,比我自己查资料快多了:

我有一个excel模板,A1到O6是表头,我有一些数据,从第7行以后写入,请给我Python代码,让我读取并写入excel,且不要改变原来的格式

代码:

from openpyxl import load_workbook
from copy import copy

# ======================
# 1. 复制行样式(含行高)
# ======================
def copy_row_style(ws, src_row, tgt_row, max_col):
    # 行高
    height = ws.row_dimensions[src_row].height
    if height is not None:
        ws.row_dimensions[tgt_row].height = height

    # 单元格样式
    for col in range(1, max_col + 1):
        src = ws.cell(row=src_row, column=col)
        tgt = ws.cell(row=tgt_row, column=col)

        if src.has_style:
            tgt.font = copy(src.font)
            tgt.border = copy(src.border)
            tgt.fill = copy(src.fill)
            tgt.number_format = src.number_format
            tgt.alignment = copy(src.alignment)
            tgt.protection = copy(src.protection)


# ======================
# 2. 打开模板工作簿
# ======================
wb = load_workbook("template.xlsx")
template_ws = wb["Template"]

START_ROW = 7
TEMPLATE_ROW = 7
MAX_COL = 15   # A–O

# ======================
# 3. 批量生成工作表
# ======================
for sheet_name, data in all_data.items():
    # 复制模板 Sheet
    ws = wb.copy_worksheet(template_ws)

    # Sheet 名(<=31 字符)
    ws.title = str(sheet_name)[:31]

    # 写固定信息
    ws["E2"] = sheet_name

    for j in range(len(data)):
        row = START_ROW + j

        # 除模板行外,其余行复制格式
        if row != TEMPLATE_ROW:
            copy_row_style(ws, TEMPLATE_ROW, row, MAX_COL)

        # ===== 写数据 =====
        a = j + 1
        b = data['日期'][j]
        c = data['凭证字号'][j]
        d = data['摘要'][j]
        e = data['科目名称'][j]
        f = data['借方金额'][j]
        g = data['审定金额'][j]

        ws.cell(row=row, column=1, value=a)  # A
        ws.cell(row=row, column=2, value=b)  # B
        ws.cell(row=row, column=3, value=c)  # C
        ws.cell(row=row, column=4, value=d)  # D
        ws.cell(row=row, column=5, value=e)  # E
        ws.cell(row=row, column=6, value=f)  # F

        # 动态列(审定金额)
        match = acctdf.loc[acctdf['科目名称'] == e, '列']
        if not match.empty:
            col_index = int(match.values[0])
            ws.cell(row=row, column=col_index, value=g)

# ======================
# 4. 删除模板 Sheet
# ======================
wb.remove(template_ws)

# ======================
# 5. 一次性保存
# ======================
wb.save("全部报表.xlsx")

不得不感叹AI的强大。

改代码

我总是吹牛说自己会Python会SQL,其实我不过是上研究生的时候消磨时间学来的而已,浅浅地入门都算不上,更别说系统性地学习了。而且,我的Python水平都只能说一般,就更别谈别的编程语言,有时候我想改动WordPress主题的一个小功能都费劲,可现在有了AI就完全不一样。

比如,我的站点使用了缓存,所以发布时间总是不准确,我就想把这个功能放到前端去实现,不要让PHP自动生成发布时间。这个小功能我自己肯定也能摸索出来,但估计得花上个几小时,而ChatGPT10分钟就帮我搞定了:

我的WordPress使用了缓存,导致我文章显示日期不准确,有没有什么解决办法?我的模板里有一句<?php echo poi_time_since(strtotime($post->post_date_gmt)); ?>

ChatGPT立马给了解决方案:

<script>
function timeAgo(date) {
    const now = new Date();
    const seconds = Math.floor((now - date) / 1000);
    const intervals = [
        { label: '年', seconds: 31536000 },
        { label: '个月', seconds: 2592000 },
        { label: '天', seconds: 86400 },
        { label: '小时', seconds: 3600 },
        { label: '分钟', seconds: 60 }
    ];

    // 超过 90 天只显示日期
    if (seconds > 90 * 86400) {
        return date.getFullYear() + '-' +
               String(date.getMonth()+1).padStart(2,'0') + '-' +
               String(date.getDate()).padStart(2,'0');
    }

    for (const i of intervals) {
        const count = Math.floor(seconds / i.seconds);
        if (count >= 1) return count + i.label + '前';
    }
    return '刚刚';
}

function refreshTime() {
    document.querySelectorAll('.post-time, .comment-time').forEach(el => {
        if (!el.dataset.time) return;
        const date = new Date(el.dataset.time);
        el.textContent = '发布于 ' + timeAgo(date);
    });
}

// 等 DOM 加载完再执行
document.addEventListener('DOMContentLoaded', function() {
    refreshTime();
    setInterval(refreshTime, 60000);
});
</script>

只需要把这段js放在footer.php,再替换掉相应的html标签,这样我的文章发布时间就正常多了。

当年使用诺基亚语音拨号的时候、当年苹果发布Siri的时候、第一次使用小爱同学的时候,我总觉得电脑笨成这样,能给人带来多少便利呢,以至于我从来没有期待过AI。

直到最近几年,OpenAI、StableDiffusion、Deepseek、豆包手机,一次又一次给我震撼,我才真正感觉到了未来已来。