nodejs-polars icon indicating copy to clipboard operation
nodejs-polars copied to clipboard

Excel I/O support?

Open jackfiszr opened this issue 7 months ago • 4 comments

Hi maintainers,

Are there any plans or a roadmap to add Excel I/O support? I’ve created a small wrapper that adds readExcel/writeExcel methods using the ExcelJS engine. For a built-in solution, I’m curious:

  1. Is Excel I/O on the roadmap? Any expected timeline or prioritization?
  2. Would you accept a minimal ExcelJS-based implementation to start?
  3. How do you envision an engine-agnostic API (e.g. supporting ExcelJS, SheetJS/xlsx, or Rust’s Calamine via WASM)?

Thanks for any insight.

jackfiszr avatar Jun 05 '25 16:06 jackfiszr

  1. Last time Excel support came up, the answer was: .csv is good enough
  2. In your project you are using exceljs which is not maintained anymore

Bidek56 avatar Jun 05 '25 19:06 Bidek56

  1. I agree that CSV is enough — but not in my workplace, unfortunately 😉

  2. It's true that ExcelJS development is slow (and was dormant for a while), but I wouldn’t call it unmaintained. The main alternative, SheetJS, isn’t fully open source.

  3. I assumed that feature parity with Python Polars is kind of a guiding principle — and Python Polars has Excel I/O, of course.

jackfiszr avatar Jun 06 '25 15:06 jackfiszr

I assumed that feature parity with Python Polars is kind of a guiding principle — and Python Polars has Excel I/O, of course.

so this was the case pretty early on, but as polars has evolved, more functionality has been written in python, such as the excel reader and many other readers. Unlike JS, python has much more mature ffi apis allowing bi directional data flows (calling rust from python & python from rust).

Unfortunately, Javascript does not easily support calling JS from rust, which greatly limits our ability to support some functionality available in python.

universalmind303 avatar Jun 06 '25 22:06 universalmind303

py-polars uses calamine as it's default Excel engine, hence it could be possible to add this on the Rust side.

Bidek56 avatar Jun 07 '25 00:06 Bidek56