david234
Excel Sheet(xslx) Import to Postgres DB in Elixir Phoenix
I am working on one project where I have to import data from an Excel sheet to Postgres DB. In my Previous Project, I have done the CSV File import using nimble_csv | Hex. It works like a charm.
In this Project, I am dealing with Excel files.
NimbleCSV.define(NimbleCSV.Spreadsheet, [])
NimbleCSV.define(MyParser, escape: "\"")
alias NimbleCSV.RFC4180, as: CSV
def import_shipments(conn, %{"params" => %{"import_file" => params} }) do
params.path
|> File.stream!(read_ahead: 100_000)
|> MyParser.parse_stream([skip_headers: true])
|> Stream.map(fn n ->
case n do
[name, barcode] ->
IO.inspect name
IO.inspect barcode
_ -> IO.inspect "empty"
end
end)
|> Stream.run
render(conn, "index.html")
end
I am getting this error.
** (NimbleCSV.ParseError) unexpected escape character " in <<101, 236, 208, 147, 208, 215, 243, 190, 72, 245, 234, 52, 141, 234, 136, 196, 67, 12, 6, 170, 162, 4, 133, 193, 197, 118, 8, 189, 129, 253, 238, 237, 225, 25, 86, 205, 162, 222, 224, 104, 37, 143, 176, 31, 18, 171, 188, 19, 216, 128, ...>>
Can anyone give me insight on this? Your help is greatly appreciated. Thanks
Most Liked
NobbZ
Is <<0x50, 0x4b, 0x03, 0x04, …>>, which again is the “magic number” for ZIP archives, which again is the envelop format for excel spreadsheets.
nimble_csv can’t work with those, as nimble_csv is a CSV parser, not an Excel Spreadsheet parser.
Please use a library suited to Excel Spreadsheets or open your data in Excel and export it as CSV.
mindok
Is it a CSV file you are parsing or an excel file?
Edit: It doesn’t look like CSV, in which case NimbleCSV is the wrong tool for the job…
Dusty
Did you export the file as CSV? The library assumes that starting format, not XLSX, etc.








