umya-spreadsheet is a library written in pure Rust to read and write xlsx file.
(Maybe I didn't set it up right, but it's because I no longer get notifications when new messages come in and I don't notice them anymore.)
Please mention in issues if you have any questions.
cleanup() is now available. Remove invisible garbage data. Doing so may reduce file size. Processing may take some time.
let path = std::path::Path::new("./tests/test_files/aaa.xlsx");
let mut book = umya_spreadsheet::reader::xlsx::read(path).unwrap();
book.get_sheet_mut(&0).unwrap().cleanup();
Minor bug fixes
Add the following code to Cargo.toml
[dependencies]
umya-spreadsheet = "2.1.2"
# WebAssembly support
umya-spreadsheet = { version = "2.1.2", features = ["js"] }
# Use only png for image processing
umya-spreadsheet = { version = "2.1.2", features = ["image/png"] }
Add the following code to main.rs
extern crate umya_spreadsheet;
let path = std::path::Path::new("./tests/test_files/aaa.xlsx");
let mut book = umya_spreadsheet::reader::xlsx::read(path).unwrap();
Delays the loading of the worksheet until it is needed.
When loading a file with a large amount of data, response improvement can be expected.
let path = std::path::Path::new("./tests/test_files/aaa.xlsx");
let mut book = umya_spreadsheet::reader::xlsx::lazy_read(path).unwrap();
let mut book = umya_spreadsheet::new_file();
let path = std::path::Path::new("./tests/result_files/bbb.xlsx");
let _ = umya_spreadsheet::writer::xlsx::write(&book, path);
let path = std::path::Path::new("./tests/result_files/bbb.xlsx");
let _ = umya_spreadsheet::writer::xlsx::write_with_password(&book, path, "password");
let from_path = std::path::Path::new("./tests/test_files/aaa.xlsx");
let to_path = std::path::Path::new("./tests/result_files/bbb.xlsx");
let _ = umya_spreadsheet::writer::xlsx::set_password(&from_path, &to_path, "password");
let mut book = umya_spreadsheet::new_file();
book.get_sheet_by_name("Sheet1").unwrap().get_cell("A1").get_value();
book.get_sheet_by_name("Sheet1").unwrap().get_cell((1, 1)).get_value();
book.get_sheet_by_name("Sheet1").unwrap().get_cell((&1, &1)).get_value();
book.get_sheet_mut(0).unwrap().get_cell((&1, &1)).get_value();
let mut book = umya_spreadsheet::new_file();
book.get_sheet_by_name_mut("Sheet1").unwrap().get_cell_mut("A1").set_value("TEST1");
book.get_sheet_mut(0).unwrap().get_cell_mut("A1").set_value("TEST2");
let range = "A1:A3";
let row = 10;
let column = 2;
book.get_sheet_by_name_mut("Sheet1").unwrap().move_range(range, &row, &column);
let mut book = umya_spreadsheet::new_file();
let mut style = book.get_sheet_by_name_mut("Sheet1").unwrap().get_style_mut("A1");
// fill color on red.
style.set_background_color(umya_spreadsheet::Color::COLOR_RED);
let mut book = umya_spreadsheet::new_file();
// Add Chart
let mut from_marker = umya_spreadsheet::structs::drawing::spreadsheet::MarkerType::default();
from_marker.set_coordinate("C1");
let mut to_marker = umya_spreadsheet::structs::drawing::spreadsheet::MarkerType::default();
to_marker.set_coordinate("D11");
let area_chart_series_list = vec![
"Sheet1!$A$1:$A$10",
"Sheet1!$B$1:$B$10",
];
let mut chart = umya_spreadsheet::structs::Chart::default();
chart.new_chart(
umya_spreadsheet::structs::ChartType::LineChart,
from_marker,
to_marker,
area_chart_series_list,
);
book.get_sheet_by_name_mut("Sheet1").unwrap()
.add_chart(chart);
Pass the book as a Spreadsheet
to modify it in other functions.
let mut book = umya_spreadsheet::new_file();
let _ = book.new_sheet("Sheet2");
update_excel(&mut book);
fn update_excel(book: &mut Spreadsheet) {
book.get_sheet_by_name_mut("Sheet2").unwrap().get_cell_mut("A1").set_value("Test");
}
See the next chapter for implementation status and more detailed usage.
Function | detail | example |
---|---|---|
file reader | xlsx, xlsm | here. |
file lazy_reader | xlsx, xlsm | here. |
file writer | xlsx, xlsm | here. |
csv | here. | |
file writer with password | xlsx, xlsm | here. |
worksheet | read, new, copy | here. |
cell value | read, edit, formated value. | here. |
cell style | read, edit | here. |
columns | read, edit, auto width | here. |
rows | read, edit | |
charts | read, edit | here. |
drawings | read, edit(Still might be inconvenient.) | |
images | read, edit | here. |
ole objects | read, edit(Still might be inconvenient.) |
MIT
Contributions by way of pull requests are welcome! Please make sure your code uses:
cargo fmt
for formatting