excel 打开 csv 文件,另存为 xlsx 即可将 csv 转成 excel
鉴于此我想实现代码控制 window 上安装的 excel 进行转换,即所谓的无头模式。
实现效果是:写一段程序,运行程序后将参数指定的 csv 使用 excel 转成 xlsx 。
网上搜索相关资料似乎可以加载 excel 下的相关 dll 实现,没有找到具体实现
想请假大家,能使用哪种语言方便实现呢?批处理可否实现?应该去哪里查询 excel 的相关资料,相关 api ?
网上有很多文档转换网站,如 pdf 转 word ,excel 转 jpg ,等等,我猜测他们也是控制 excel 实现的,所以想学习下相关技术,后期实现各种 excel 支持的格式互转。
1
nodejx 2022-04-02 19:27:11 +08:00 via Android 1
MS 自家的 Power Automate Desktop.
|
2
loading 2022-04-02 19:30:37 +08:00
python pywin32
|
3
march1993 2022-04-02 19:31:32 +08:00
搜索 office 自动阅卷看看。。。应该是类似的基数
|
4
nodejx 2022-04-02 19:46:34 +08:00
|
5
wangkun025 2022-04-02 19:57:08 +08:00
python 或者 ruby 的话,都是一句代码读取,一句代码写入啊。
|
6
hannibalm 2022-04-02 19:58:37 +08:00 via Android
python 的 xlwings 库
|
7
Tink 2022-04-02 20:14:03 +08:00 via Android
Python 有库
|
8
wangkun025 2022-04-02 20:18:17 +08:00
# run `gem install caxlsx` before run the script
# read csv file require 'csv' arr_of_rows = CSV.read("input.csv") # write to excel require 'caxlsx' Axlsx::Package.new do |p| p.workbook.add_worksheet(:name => "Sheet1") do |sheet| arr_of_rows.each {|row| sheet.add_row row} end p.serialize('output.xlsx') end # 写了个 ruby 版本的,但确实超过两行了。 |
9
kokutou 2022-04-02 20:21:15 +08:00
libreoffice
csv 本身就没格式, 所以用 libreoffice 也不怕格式出问题 start /wait soffice --headless --convert-to xlsx:"Calc MS Excel 2007 XML" file_to_convert.csv office 之前找过的例子, 是用的 vba, 写起来特恶心... Set wBook = Workbooks.Open(CSVfolder & fname, Format:=6, Delimiter:=",") wBook.SaveAs XlsFolder & Replace(fname, ".csv", ""), xlOpenXMLWorkbook wBook.Close False |
10
miyuki 2022-04-02 20:30:00 +08:00
我当时也有类似需求,要填很多模板表( xls ),而且很多 cell 有保护,而且要保留格式,最后无奈用了 vba
|
11
ysc3839 2022-04-02 20:32:51 +08:00 via Android
可以用 Excel 提供的 COM 接口来实现,只要是能调用 COM (准确说是 IDispatch) 的语言都可以使用。cmd 脚本不行。
@kokutou 直接用 VBA 确实恶心,但是也可以用别的语言调用 COM 接口,函数、参数什么的都和 VBA 的是一样的。 |
12
renmu123 2022-04-02 21:04:20 +08:00 via Android
csv 转 xlsx 应该没什么难度,基本上每个语言都有操作的库
|
13
nightwitch 2022-04-02 21:29:23 +08:00 2
代码: https://gist.github.com/BlurryLight/e677730a9dfa4fef9c029b655a26d617
完全符合你的需求,调用 com 接口,支持调用 office excel/ wps excel 。 虽然 csv 转 xlsx 有许多库可以做到 (比如 pandas),但是如果你要完美符合 office 的表现的话,调用无头的 excel 进行转化是最方便的。 |