我不是专家,所以我提前为我的问题道歉(我确信对于高级用户来说,这个问题相当基础)。我的 excel 文件中有 350 多行。我希望有一种方法可以使用宏来做到这一点,而不是复制和粘贴各个行来创建我需要的唯一 csv 文件?
答案1
将整个 Excel 文件保存为名为 myfile.csv 的 csv
在同一文件夹中创建文件 split.bat,内容如下:
@echo off
set /a c=0
setlocal ENABLEDELAYEDEXPANSION
for /F "tokens=*" %%A in (myfile.csv) do (
set /a c=c+1
echo %%A > !c!.csv
)
运行split.bat
后你将得到 350 多个 csv 文件,里面只有一行
答案2
不会写代码。
但是如果您只是希望能够将打开的 Excel 工作表/在 Excel 中打开的 CSV 中的可见行保存到新的 .csv 中,并且您不想或不能自己编写代码,那么快速而肮脏的解决方案是创建一个工作簿并录制一个宏来为您完成此操作。
这是一种可能的方法——它不是优雅的代码,但它有效:
- 创建包含两个工作表页的工作簿
- 点击录制宏
- 将 csv 中的数据导入到第一页
- 创建过滤器
- 设置过滤器参数
- 选择到最后一条记录以下的行(以及任何可预见的未来记录)
- 复制
- 粘贴到第二张工作表页面(默认情况下,仅复制可见的行)
- 将第二页导出为 .csv
- 停止录制
它生成的代码有点糟糕,但是宏可以起作用。
请记住,它将始终将过滤参数设置为您在录制时使用的参数。因此,如果您想要使用不同过滤参数的不同 .csv 文件,则必须创建多个宏,或者每次使用时手动进行导入和过滤,然后单击仅从上述步骤 6 开始记录宏(选择行)
您可以浏览录制的宏并清理代码,还可以进行更改以使其更加通用 - 或者至少查看代码的样子(如果您从未使用 VB 或 VBA 编码)
答案3
您可以直接将其保存为 .csv 文件。点击文件并选择另存为。在下面保存类型, 选择CSV(逗号分隔). 点击保存。
=================== 抱歉,我之前误解了您的问题。您可以使用以下 python 脚本来实现您的目标。
#! /usr/bin/python
from xlrd import open_workbook
f=open_workbook('source.xlsx')
sheets=f.sheets()
for sheet in sheets:
for r in range(sheet.nrows):
filename=str(r)+'.csv'
file=open('%s' % filename,'w+')
for c in range(sheet.ncols):
value=str(sheet.cell(r,c).value)
file.write(value)
if c!=(sheet.ncols-1):
file.write(',')
file.close()