74 个版本 (17 个稳定版本)
使用旧的 Rust 2015
新版本 2.0.2 | 2024 年 8 月 23 日 |
---|---|
2.0.0 | 2024 年 7 月 9 日 |
1.3.0 |
|
1.2.3 | 2024 年 3 月 1 日 |
0.1.17-beta | 2020 年 10 月 27 日 |
#82 在 解析器实现
1,839 每月下载量
用于 10 个 crate (9 个直接)
9.5MB
52K SLoC
umya-spreadsheet
描述
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