Excel在许多日常任务中都很出色。但是有时,您会遇到它的缺点之一:电子表格的大小。如果您需要了解如何缩小Excel电子表格的大小或如何拆分较大的CSV,我们将为您提供帮助。
达到电子表格的行数限制本身就是一项非常艰巨的任务。当前的Excel电子表格行限制为1,048,576。是的-超过一百万行,并且列数也相同。
但是在某些任务中,达到该行限制实际上非常容易。如果您通过电子邮件进行营销,则可能会导入包含数百万个电子邮件地址的CSV文件。唯一的问题是,您实际上如何管理具有这么多地址的电子表格?此外,如果有人(已经从另一个程序)向您发送了一个已经超过限制的CSV怎么办?
我将向您展示如何将大量CSV分解为易于管理的块。
(没有方便使用的大型CSV吗?在data.gov上有一些相当大的CSV数据集。我将使用260,000行“医院比较"列表,因此您可以使用同一文件。)
1。使用程序
那里有许多有用的CSV拆分器程序。我将向您展示其中的两个。
CSV Chunker
CSV Chunker是开源CSV拆分器。它可以处理海量文件,迅速将它们拆分成您选择的部分。将“医院比较" CSV分为106个大块大约花了3秒钟,每个大块包含2500行。
CSV分离器
CSV分离器是我们的第二个工具。它提供了与CSV Chunker几乎相同的功能,尽管设计略显时尚。 CSV拆分器大约用了4秒钟将“医院比较" CSV拆分为106个,每次也包含2500行。
2。使用批处理文件
接下来是可编程的批处理文件。我们可以使用批处理文件将CSV处理为较小的块,从而自定义文件以交付不同的块。
打开一个新的Text文档。复制并粘贴以下内容:
@echo offsetlocal ENABLEDELAYEDEXPANSIONREM Edit this value to change the name of the file that needs splitting. Include the extension.SET BFN=HCAHPSHospital.csvREM Edit this value to change the number of lines per file.SET LPF=2500REM Edit this value to change the name of each short file. It will be followed by a number indicating where it is in the list.SET SFN=HosptialSplitFileREM Do not change beyond this line.SET SFX=%BFN:~-3%SET /A LineNum=0SET /A FileNum=1For /F "delims==" %%l in (%BFN%) Do (SET /A LineNum+=1echo %%l >> %SFN%!FileNum!.%SFX%if !LineNum! EQU !LPF! (SET /A LineNum=0SET /A FileNum+=1))endlocalPause
You’ll need to configure the batch file before running. I’ll tell you what each command does, and you can alter it to suit the size of your batch file, as well as the required output.
输入变量后,转到文件>另存为。 选择文件名,然后选择保存。。然后,选择新保存的文本文件,然后按 F2 重命名。用BAT替换TXT扩展名,并在出现警告时按 OK 。现在您可以拆分大型CSV了!
我警告您,此方法确实需要一些时间。您最好使用上述拆分器之一。
原始脚本和线程可以在此处找到。
3。使用PowerShell脚本
批处理文件很方便。您可以将它们用于各种日常任务。但是PowerShell脚本的速度通常要快得多,尤其是对于这种类型的处理和划分。
以下脚本将快速将大型CSV剪切为较小的文件。同样,我以“医院比较CSV"为例。该命令运行了大约3秒钟。打开Windows PowerShell ISE。如果不确定如何执行此操作,请在“开始"菜单搜索中输入 powershell ise ,然后选择相应的选项。打开PowerShell ISE后,选择右上角的 Show Script 箭头(下图中以红色标记)。
复制并粘贴以下命令进入屏幕顶部的脚本面板。
$i=0; Get-Content C:\Users\Gavin\Downloads\Hospital_Revised_Flatfiles\HCAHPSHospital.csv -ReadCount 2500 | %{$i++; $_ | Out-File C:\Users\Gavin\Downloads\Hospital_Revised_Flatfiles\split\splitfile_$i.csv}
首先,您需要更改输入文件的位置。其次,您需要指定输出文件应包含多少行。最后,指定您的输出文件位置。我将文件路径留在那里以说明情况。此外,您的输出文件名必须具有后缀“ _ $ i.csv"。否则,输出文件将无法正确编号。
使用自己的数据编辑文件后,请按 CTRL + S 保存脚本。
原始脚本可以在这里找到。
4。将其加载到数据模型中
我们最终的解决方案实际上不是将大型CSV拆分为较小的部分。您可以看到,OneDrive团队的成员Jose Barreto最近准确地说明了如何在Excel中加载大型CSV文件。在这种情况下,大意味着超过1,048,567行限制。他在教程中解释说,Excel 2016可以创建指向CSV文件的数据链接,而不是实际加载文件。
原始CSV数据将在数据模型内提供给用户。 Barreto使用“最多850万行完全没有问题"创建了一个数据透视表。上图取自Barreto的博客文章(链接如下),在Excel中总共显示了200万行。 (了解如何使用数据透视表进行数据分析。)
如果这是适合您的解决方案,请在此处关注Jose Barreto的详细教程。请记住,这并不是拆分CSV,但这确实意味着您可以在某些Excel工具中操作数据。如果要直接访问数据以与其进行交互,则值得尝试。
分解!
我们列出了四种解决方案,可以分解大量的CSV文件,包括两种不同的工具。
在四种解决方案中,批处理文件可能是最慢的。 PowerShell脚本是快速且易于自定义的,而这两个应用程序即开即用。最后,您可以选择按几百万行直接将数据导入Excel。
有关更多Excel技巧,请查看如何合并Excel文件和表格。
< small>图片来源:lucadp / Depositphotos
标签: Microsoft Excel 电子表格