如何将图表保存为 Microsoft Excel 中的 PNG 或 GIF 文件?
我知道我可以将其保存为 HTML 文件并使用其中创建的图像,但我怀疑有一种方法不会产生我不想要的其他文件混乱。如果这是推荐的选项,我很乐意安装插件。
如果有必要的话,我正在使用 Excel 2003 和 2007。
答案1
Excel 缺乏对此功能的任何用户可访问的支持,但你可以轻松地解决这个问题,或者深入研究 VBA,其中此功能是假如:
“一次性”出口
- 选择图形(整个图形,而不是内部组件;因此选择边框)。
- 复制它(ctrl-c,右键单击复制,无论您喜欢什么)。
- 打开 MS Paint。
- 粘贴(您可能希望先最小化图像尺寸,它会被放大以适应,但不会缩小)。
- 根据需要保存。
批量导出
您可能希望使用ActiveChart.Export
VBA 宏,这可以让您指定文件路径,然后让 Excel 完成工作。
下面是我刚刚组装的一个工作原型。运行它,每一个活动工作簿中的图表将以 PNG 格式导出到与该文件相同的文件夹中,并_chart##
在文件名后附加 (其中##
是一个增加的数字)。
它没有执行任何安全检查(因此将覆盖文件!)并没有包含任何错误检查。它将不会如果您尚未保存工作簿,则该位置是只读的,或者存在任何其他阻止写入文件位置的情况。我只在 Excel 2003 中测试过这一点(因为这是我目前手头上的所有东西)。
换句话说:使用风险自负,这是为了仅限基本工作示例。
'small nicety to ensure two-digits for better file sorting'
Function NiceFileNumber(num As Integer) As String
If num < 10 Then
NiceFileNumber = "0" & num
Else
NiceFileNumber = num
End If
End Function
'the real function'
Sub ExportAllCharts()
Dim i As Integer, exportCount As Integer
Dim fileNum As String, fileBase As String
Dim sheetObj As Worksheet
Dim chartObj As Chart
'current file location and name, with extension stripped'
fileBase = Left(ThisWorkbook.FullName, InStrRev(ThisWorkbook.FullName, ".") - 1)
exportCount = 0
'First, export all charts that are in their own sheets'
For Each chartObj In ActiveWorkbook.Charts
fileNum = NiceFileNumber(exportCount)
exportCount = exportCount + 1
'Do the export'
chartObj.Export fileBase & "_chart" & fileNum & ".png"
Next
'Then, export all charts that are embedded inside normal sheets'
For Each sheetObj In ActiveWorkbook.Worksheets
For i = 1 To sheetObj.ChartObjects.count
fileNum = NiceFileNumber(exportCount)
exportCount = exportCount + 1
'Do the export'
sheetObj.ChartObjects(i).Activate
ActiveChart.Export fileBase & "_chart" & fileNum & ".png"
Next i
Next
End Sub
注意:我在两端都用 s 包裹了注释'
,虽然这不是必需的,但有助于确保它们在这里的颜色正确。
答案2
最好的方法是将 Excel 文件保存为 HTML。
然后转到存储图像的文件夹,您将看到所需的 PNG 图像。
答案3
要安全地转换为 PNG,您可以从 Excel 复制图形,将其粘贴到 Power Point 中的幻灯片上,然后执行以下操作。
另存为→其他格式,然后选择所需的格式。然后它会询问您是否要将其仅应用于当前幻灯片,还是应用于所有幻灯片。如果您选择所有幻灯片,它会在您指定的目录中创建一个文件夹,并以所选格式将每张幻灯片保存到自己的文件中。
它不是很优雅,但是当您只需要文件时它可以足够快,并且如果您已经用相同的图表制作了演示文稿,它会特别有用。
答案4
在 Excel 2010 中,您可以通过以下方式执行此操作:
- 单击图表将其选中。
- 使用 CTRL+C 进行复制,或右键单击并选择复制。
- 切换到图形编辑程序(我使用Paint.net)。
- 粘贴。
然后您可以按照您喜欢的任何格式保存图像。