如何在Excel中打开CSV
好的方法
- Excel → 数据 → 获取外部数据 → 用Shift选择所有列,然后选择Text
坏的方法
- 用双击或Excel的Open with对话框打开CSV
好的方法(适用于VBA)
-。使用 QueryTables(VBA 对应 Get external data
) → 示例代码
坏方法(对于 VBA)
- 使用
Workbooks.OpenText
方法 → 示例代码
附加方法
如果你可以访问创建 CSV 的源。你可以改变CSV的语法。
将每个值用双引号括起来,并在前面加上等号,如="00001"
或在每个值后面加上制表符。这两种方法都会迫使Excel将值视为文本
在 记事本 打开CSV,并将所有值复制粘贴到Excel。然后使用数据-文本到列
缺点。Text in Columns用于改变列格式,从一般的回到文本,产生不一致的结果。如果一个值包含一个由字符包围的-
(例如"=E1-S1"),Excel会尝试将该值分割成多个列。位于该单元格右侧的值可能会被覆盖
(Text to columns的行为在Excel 2007和2013年之间的某个地方发生了改变,所以它不再工作了)
Excel插件打开CSV并将所有值作为文本导入
这是一个Excel插件,用于简化CSV导入操作。
主要优势:这是一个一键式解决方案,并使用QueryTables
,与获取外部数据背后的防弹方法相同
- 它为Excel添加了一个新的菜单命令,让您导入CSV和TXT文件。所有的值都导入到活动工作表,从当前选定的单元格开始
- Excel 附加功能适用于 Windows 和 Mac 上的所有 Office 版本
- 整个附加功能只有 35 行代码。
- 使用的 CSV 列表分隔符(逗号或分号)取自本地 Excel 设置
- 编码设置为 UTF-8
安装
- 下载 附加功能 并将其保存到您的附加功能文件夹。
%appdata%\Microsoft\AddIns
- 打开 Excel 并激活附加功能:
File tab → Options → Add-Ins → Go To
并选择 ImportCSV.xla
- 启用 VBA 宏。
File tab → Options → Trust Center → Trust Center Settings → Macro Settings → Enable all macros
- 重新启动 Excel
你会注意到一个名为 Add-Ins 的新菜单栏条目,你可以使用这个按钮快速打开你的 CSV 文件,而不需要经历导入对话框的麻烦
PowerShell 脚本直接从 Windows 资源管理器打开 CSV
你可以使用 PowerShell 脚本打开 CSV 文件,并自动将它们传递给 Excel。该脚本默默地使用Excel的文本导入方法,该方法总是将值作为文本处理,并且,作为奖励,它可以处理UTF-8编码
1.创建一个新的文本文件并粘贴以下脚本。可以找到一个注释版本 这里
$CSVs = @()
$args.ForEach({
If ((Test-Path $_) -and ($_ -Match "\.csv$|\.txt$")) {
$CSVs += ,$_
}
})
if (-Not $null -eq $CSVs) {
$excel = New-Object -ComObject excel.application
$excel.visible = $true
$excel.SheetsInNewWorkbook = $CSVs.Count
$workbook = $excel.Workbooks.Add()
for ($i=0; $i -lt $CSVs.Count; $i++){
$csv = Get-Item $CSVs[$i]
$worksheet = $workbook.worksheets.Item($i + 1)
$worksheet.Name = $csv.basename
$TxtConnector = ("TEXT;" + $csv.fullname)
$Connector = $worksheet.QueryTables.add($TxtConnector,$worksheet.Range("A1"))
$query = $worksheet.QueryTables.item($Connector.name)
$query.TextFilePlatform = 65001
$query.TextFileTextQualifier = 1
$query.TextFileOtherDelimiter = $Excel.Application.International(5)
$query.TextFileParseType = 1
$arrFormats = ,2 * $worksheet.Cells.Columns.Count
$query.TextFileColumnDataTypes = $arrFormats
$query.AdjustColumnWidth = 1
$query.Refresh()
$query.Delete()
}
}
1.将其保存在某个地方,比如C:\my\folder\myScript.ps1
。(注意扩展名 .ps1
)
- 通过 WinR 打开你的 sendto 文件夹 “ shell:sendto
” 输入
2. 通过右键 “ 新建 ” 快捷方式创建一个新的快捷方式,并粘贴这一行。不要忘了把路径改成你自己放脚本的地方。给快捷方式命名,例如,Excel
“%SystemRoot%/system32/WindowsPowerShell/v1.0/powershell.exe ” -NoProfile -NonInteractive -WindowStyle Hidden -File “C:\my\folder\myScript.ps1”
现在你可以选择(多个)CSV并通过Right-click » SendTo » Excel
在Excel中打开它们。