由于工作性质,拿到的数据很多都是csv格式的,默认excel打开乱码,也找了一些方法去处理,结果都不行。
由于用wps出现过一次问题,导致一些数据丢失,暂时不考虑wps。
自己尝试用python写了1个,效果依旧不好。
然后自己找了一下其他的工具,都差强人意。
各位可还有其他的路子。
由于工作性质,拿到的数据很多都是csv格式的,默认excel打开乱码,也找了一些方法去处理,结果都不行。
由于用wps出现过一次问题,导致一些数据丢失,暂时不考虑wps。
自己尝试用python写了1个,效果依旧不好。
然后自己找了一下其他的工具,都差强人意。
各位可还有其他的路子。
如果只是简单的乱码,用vscode之类的文本编辑器,另存编码为GB2312、GBK,然后excel再打开试试。
如果还要做分析,改数据,那还是python
编码问题而已。你要处理成什么呢?csv在linux命令行工具集下是awk来处理的。
下面这段vba是用来csv转excel的
`
if WScript.Arguments.Count < 2 Then
WScript.Echo “Please specify the source and the destination files. Usage: ExcelToCsv <xls/xlsx source file> ”
Wscript.Quit
End If
csv_format = 6
xlsx_format = 56
Set objFSO = CreateObject(“Scripting.FileSystemObject”)
src_file = objFSO.GetAbsolutePathName(Wscript.Arguments.Item(0))
dest_file = objFSO.GetAbsolutePathName(WScript.Arguments.Item(1))
Dim oExcel
Set oExcel = CreateObject(“Excel.Application”)
Dim oBook
Set oBook = oExcel.Workbooks.Open(src_file)
oBook.SaveAs dest_file, xlsx_format
oBook.Close False
oExcel.Quit`
把你的csv文件样本脱敏以后放上来,可以帮你看看到底是怎么回事
另外,不知道你用过我的作品没有,fastcsviewer,一个非常小巧快速的csv文件查看器,可以到我的主页去下载试试。dangerace.ys168.com
Python 效果不好指的是什么?试试 pandas.DataFrame.to_excel — pandas 1.4.1 documentation (pydata.org) ?
以及 Excel 如果是比较新的版本,默认应该也直接可以打开 UTF-8 编码的 CSV 文件了。实在不行的话可以上 LibreOffice Calc ?
csv本质上就是txt文件, 哪怕是系统自带的记事本也可以修改编码.
如果要大量处理csv, 可以试试 emeditor . 现在免费版开放的功能也很多, 完全够用.
谢谢,就是想直接CSV抓XLSX
嗯嗯,目前都是先改编码,再打开。
想一步到位,就是想直接CSV抓XLSX
嗯嗯 我去看了一下。
目前用的这个方法,都需要手动去导入一下
之前用过你的这个作品,记得只有查阅功能。
谢谢,就是想直接CSV转XLSX
pandas 我转换出来,少几行
能否告知具体是哪个版本可用呢 execl
我的是Microsoft Office Mondo 2016
如果系统关联没有被改动,windows会自动启用excel来打开csv文件,不需要用户自己去“转”
你现在反馈说用excel打开是乱码,通常情况下是编码问题造成的,但也可能是其他问题,所以才说,你可以把脱敏后的样本放上来,大家才方便帮你确认问题的真正原因是什么。
如果仅仅是编码问题,那确实不需要动用python什么的第三方工具,excel自己就能完美解决
可以试试这个Quicker动作
操作前备份好文件。
如果不行的话可以提供一个csv样例,帮你做一个试试,目前quicker有一个表格的操作可以读取csv和导出excel。
import codecs
import chardet
def convert(file, in_enc="GBK", out_enc="UTF-8"):
in_enc = in_enc.upper()
out_enc = out_enc.upper()
try:
print("convert [ " + file.split('\\')[-1] + " ].....From " + in_enc + " --> " + out_enc )
f = codecs.open(file, 'r', in_enc)
new_content = f.read()
codecs.open(file, 'w', out_enc).write(new_content)
# print (f.read())
except IOError as err:
print("I/O error: {0}".format(err))
try:
with open(new_data_file, "rb") as f:
data = f.read()
codeType = chardet.detect(data)['encoding']
convert(new_data_file, codeType, 'UTF-8')
except:
pass
谢谢 后面我参考一下