#spreadsheet #xlsx #reader-writer #excel #read-file #file-reader #write-file

umya-spreadsheet

umya-spreadsheet 是一个用纯 Rust 编写的库,用于读取和写入 xlsx 文件

74 个版本 (17 个稳定版本)

使用旧的 Rust 2015

新版本 2.0.2 2024 年 8 月 23 日
2.0.0 2024 年 7 月 9 日
1.3.0 2024 年 7 月 6 日
1.2.3 2024 年 3 月 1 日
0.1.17-beta2020 年 10 月 27 日

#82解析器实现

Download history 371/week @ 2024-05-03 270/week @ 2024-05-10 330/week @ 2024-05-17 479/week @ 2024-05-24 259/week @ 2024-05-31 238/week @ 2024-06-07 309/week @ 2024-06-14 270/week @ 2024-06-21 223/week @ 2024-06-28 680/week @ 2024-07-05 281/week @ 2024-07-12 279/week @ 2024-07-19 673/week @ 2024-07-26 521/week @ 2024-08-02 279/week @ 2024-08-09 255/week @ 2024-08-16

1,839 每月下载量
用于 10 个 crate (9 个直接)

MIT 许可证

9.5MB
52K SLoC

umya-spreadsheet

Result Image

Crates.io Github CI Crates.io GitHub Sponsor

描述

umya-spreadsheet 是一个用纯 Rust 编写的库,用于读取和写入 xlsx 文件。

聊天

聊天将关闭。

(可能我没有设置好,但现在我不再收到新消息的通知,所以没有注意到。)

如果有任何问题,请在问题中提及。

更新详情

版本 2.0.2

  • 小错误修复

使用

安装

将以下代码添加到 Cargo.toml

[dependencies]
umya-spreadsheet = "2.0.2"

# WebAssembly support
umya-spreadsheet = { version = "2.0.2", features = ["js"] }

将以下代码添加到 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();

读取文件(延迟加载)

延迟加载工作表,直到需要时。
当加载大量数据的文件时,可以预期响应速度的提高。

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);

结构体

将书传递为 Spreadsheet 以在其他函数中修改它。


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"); 
}

请参阅下一章以获取实现状态和更详细的用法。

支持状态

功能 详情 示例
文件读取器 xlsx, xlsm 这里.
文件延迟读取器 xlsx, xlsm 这里.
文件写入器 xlsx, xlsm 这里.
csv 这里.
带密码的文件写入器 xlsx, xlsm 这里.
工作表 读取、新建、复制 这里.
单元格值 读取、编辑、格式化值。 这里.
单元格样式 读取、编辑 这里.
读取、编辑、自动宽度 这里.
读取、编辑
图表 读取、编辑 这里.
绘图 读取、编辑(可能仍不方便。)
图片 读取、编辑 这里.
ole 对象 读取、编辑(可能仍不方便。)

许可证

MIT

贡献

欢迎通过拉取请求进行贡献!请确保您的代码使用

  • cargo fmt 用于格式化
  • clippy

依赖项

~16–25MB
~424K SLoC