如何有效减小 Excel 文件的大小:6 种实用方案

你有没有遇到过这样的情况:给客户发送 Excel 文件时,却因为附件太大而无法发送;或者打开一个 Excel 表格后,足足卡顿一分钟才能开始编辑?为了不让这些问题影响日常工作,我们有必要减小 Excel 文件大小。通过优化文件结构、压缩图片以及清理无用内容,可以有效减小文件体积,同时改善 Excel 的打开和编辑速度。

本文将介绍 6 种实用的方法,帮助你快速缩小 Excel 文件体积,并提供详细的操作步骤。

手动减小 Excel 文件大小

首先,我们可以检查 Excel 文件中是否存在不必要的内容。很多时候,文件体积不断增大,是因为工作表中积累了大量多余的格式和数据。

清除多余的格式

Excel 文件变得臃肿的一个常见原因是存在大量多余的格式。例如,你可能曾经将整列格式一直设置到工作表底部,但实际上只有前 100 行包含数据。

解决方法: 选中实际数据范围之外、包含多余格式的空白单元格、行或列,然后进入 开始 选项卡,点击 清除 → 全部清除,删除这些单元格中的格式、样式以及其它残留内容。

清除空白区域的格式与样式

如果希望彻底删除不再使用的行或列,可以点击行号或列标选中整行或整列,然后右键选择 删除。

将文件保存为二进制格式

如果希望在不删除数据的情况下快速减小 Excel 文件大小,可以尝试将文件保存为二进制工作簿(.xlsb)。与常规的 .xlsx 文件相比,.xlsb 文件通常占用更少的存储空间。在数据量较大的情况下,转换为二进制格式还可以改善 Excel 的读取和写入性能。

解决方法: 打开 Excel 文件,依次点击 文件 → 另存为,然后在文件类型中选择 Excel 二进制工作簿(*.xlsb)。

将 Excel 文件另存为二进制工作簿

但是,不建议直接将文件扩展名从 .xlsx 修改为 .xlsb。仅修改扩展名并不会真正转换文件格式,还可能导致文件无法正常打开。

通过处理图片减小 Excel 文件大小

如果 Excel 工作簿中包含大量 Logo、截图或产品图片,那么它们很可能就是导致文件过大的主要原因。因此,压缩工作簿中的图片也是减小 Excel 文件大小的有效方法。

解决方法: 在工作表中选中任意一张图片,然后进入 图片格式 选项卡,点击 压缩图片。

压缩 Excel 中图片的质量

小提示: 如果希望一次压缩工作簿中的所有图片,可以取消勾选 仅应用于此图片,然后选择 电子邮件(96 ppi) 作为目标分辨率。

如果对图片清晰度的要求不高,这种方法可以快速降低图片占用的空间,从而减小整个 Excel 文件的大小。

使用 Python 一次性减小 Excel 文件大小

如果只是处理一个 Excel 文件,上面介绍的几种手动操作通常就够了。但对于需要批量处理大量 Excel 文件的开发者或企业来说,逐个打开文件进行优化效率并不高。

这时,可以使用 Free Spire.XLS for Python 对 Excel 工作簿进行自动化处理,无需安装或打开 Microsoft Excel,即可通过 Python 对工作簿中的图片、格式以及多余的行列进行处理。

将多种优化方法组合起来

前面介绍的几种方法并不需要单独使用。实际处理 Excel 文件时,可以根据工作簿的具体情况,将图片压缩、格式清理以及空白行列删除等操作组合到同一个自动化流程中。

下面的示例将这几种操作整合到一个 Python 脚本中,对工作簿进行统一优化:

  • 压缩图片: 遍历工作表中的图片,并使用 ExcelPicture.Compress() 方法对图片进行压缩,从而在尽量保持图片清晰度的同时减少文件占用空间。
  • 清理多余的单元格格式: 使用 Clear(ExcelClearOptions.ClearFormat) 方法清除指定区域中的格式,可以删除不必要的单元格样式,减少工作簿中的冗余内容,同时保留原有数据。
  • 清理空白行和列: 某些看似空白的行或列实际上仍然包含格式等信息,可能导致 Excel 扩大工作表的有效使用范围。可以使用 Worksheet.DeleteRow() 和 Worksheet.DeleteColumn() 删除这些不需要的行和列,从而进一步减小 Excel 文件大小。

下面的代码演示了如何结合这三种方法,使用 Free Spire.XLS for Python 自动优化 Excel 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from spire.xls import *
from spire.xls.common import *

# 1. 初始化并加载工作簿
workbook = Workbook()
input_path = "/input/示例文档.xlsx"
output_path = "/output/压缩.xlsx"
workbook.LoadFromFile(input_path)

# 2. 遍历工作表并执行优化操作
for i in range(workbook.Worksheets.Count):
sheet = workbook.Worksheets[i]

# 压缩图片
for picture in sheet.Pictures:
picture.Compress(50) # 压缩至 50% 的质量

# 清除指定区域的格式
target_range = sheet.Range["A1:F11"]
target_range.Clear(ExcelClearOptions.ClearFormat)

# 从后往前遍历行,避免删除行后索引发生变化
for r in range(sheet.LastRow, 0, -1):
if sheet.Rows[r-1].IsBlank:
sheet.DeleteRow(r)

# 从后往前遍历列
for c in range(sheet.LastColumn, 0, -1):
if sheet.Columns[c-1].IsBlank:
sheet.DeleteColumn(c)

# 保存文件并释放资源
workbook.SaveToFile(output_path, ExcelVersion.Version2016)
workbook.Dispose()

print(f"优化完成!文件已保存至:{output_path}")

使用上述代码减小 Excel 文件大小前后的效果对比如下:

使用 Python 有效减小 Excel 文件的大小

针对大型数据集减小 Excel 文件大小

如果 Excel 文件过大主要是因为包含大量数据,而不是图片或格式问题,那么就需要从数据的存储方式入手。

使用数据模型

如果工作表中包含数百万行数据,可以考虑将这些数据导入 Excel 数据模型,而不是全部保存在普通工作表中。

Excel 数据模型使用 VertiPaq 压缩引擎对数据进行压缩,适合处理包含大量行的数据,并可以减少将海量原始数据直接存储在工作表中的需求。

操作步骤:

  • 第一步:选中需要导入数据模型的数据区域,然后进入 数据 选项卡,点击 “从表格/区域”。

从区域创建 Power Query

  • 第二步:在打开的 Power Query 编辑器中确认数据范围无误,然后点击 关闭并上载至…。

上载工作表

  • 第三步:在“导入数据”窗口中选择 仅创建连接,并勾选 将此数据添加到数据模型,然后点击 确定。

设置如何导入数据

  • 第四步:数据加载到数据模型后,可以使用 Power Pivot 创建关系、计算字段和数据透视表,而不必将所有原始数据都保存在普通工作表中。

删除隐藏的工作表和对象

有些 Excel 文件经过多次编辑后,可能会残留已经不再使用的隐藏工作表或对象。这些内容虽然在正常使用时不容易注意到,但会增加文件的体积。

你可以使用 Excel 的检查文档功能查找这些隐藏内容。打开 文件 → 信息 → 检查问题,然后根据检查结果删除不需要的隐藏内容。

总结

减小 Excel 文件大小不仅可以方便文件传输,还能在一定程度上改善工作簿的打开和编辑体验。对于偶尔处理的 Excel 文件,可以优先尝试保存为二进制格式、清理多余格式以及压缩图片等方法。这些操作简单直接,适合快速减小文件体积。如果需要批量处理大量 Excel 文件,则可以使用 Free Spire.XLS for Python 将这些操作自动化。例如,通过程序压缩图片、清理冗余格式以及删除多余的空白行和列,可以更高效地优化工作簿。

结合手动优化和程序化处理,可以根据不同的文件类型选择合适的方法,让 Excel 工作簿更加轻量,也更便于日常使用和分享。