Closed zhaohang15639535703 closed 1 year ago
Maybe use std::io::Cursor and calamine::open_workbook_auto_from_rs? Something like:
use crate::open_workbook_auto_from_rs;
use std::io::Cursor;
use wasm_bindgen::prelude::*;
use wasm_bindgen_futures::JsFuture;
#[wasm_bindgen]
pub async fn read_excel_file(file: web_sys::File) -> Result<JsValue, JsValue> {
let file_name = file.name().to_lowercase();
let suffix = if file_name.ends_with("xls") {
"xls".to_owned()
} else if file_name.ends_with("xlsx") {
"xlsx".to_owned()
} else {
Err("this is not an excel")?
};
let buffer = file.slice()?;
let buffer = JsFuture::from(buffer.array_buffer()).await?;
let buffer = js_sys::Uint8Array::new(&buffer).to_vec();
let cursor = Cursor::new(buffer);
let sheets = open_workbook_auto_from_rs(cursor)
.map_err(|e| JsValue::from_str(&format!("Xlsx-error: {:?}", e)))?;
Ok("hello".into())
}
thank you, it helps me a lot. @dimastbk
Hello , I am writing a simple webassembly project to read the xlsx ,but I could not find how to open workbook from a Vec
here is my code: