使用电子表格管理
使用电子表格管理
电子表格管理涵盖了 crate 的日常对象表面:工作表、单元格集合、类型化值、公式、样式以及使工作簿可用的结构特性。入口点始终是一个 Workbook。
Worksheets
工作表通过工作簿的工作表集合进行管理——读取访问使用 get_worksheets,修改使用 get_worksheets_mut。工作表可通过索引 (get(0)) 或名称 (get_by_name) 定位,使用 set_name 重命名,使用 add_worksheet 添加:
let mut workbook = Workbook::new();
{
let mut worksheets = workbook.get_worksheets_mut();
let sheet = worksheets.get(0)?;
sheet.set_name("Data")?;
}单元格访问与类型化值
单元格可以使用 A1 样式或数字方式定位。get_by_index(row, column) 适用于生成的布局:
let mut cells = sheet.get_cells_mut();
cells.get("A1")?.put_value_string("Month")?;
for month in 1..=12_u32 {
cells
.get_by_index(month, 0)
.put_value_string(format!("Month {month}"))?;
}读取时,display_string_value 返回显示文本,value_type 报告存储的类型。
带有缓存结果的公式
cells.get("F1")?.put_value_i32(10)?;
cells.get("G1")?
.put_formula_with_cached_value("=F1*2", CellValue::Number(20.0))?;缓存值是 Excel 在首次重新计算之前显示的内容——提供它,以便文件的使用者能够立即看到正确的结果。
Styling
CellStyle 聚合 Font、Fill 和 Borders;StyleFlag 控制更新应用的样式方面,从而在未覆盖的地方保留现有格式。NumberFormat 决定数值的呈现方式。
页面设置与导航
PageSetup 管理打印布局:PaperSizeType、PageOrientationType 和页边距。FreezePane 在滚动时保持标题行可见,行和列的可见性使用 VisibilityType。
结构:表格、名称、批注、超链接
ListObject将范围转换为结构化表格,使用TableStyleType样式和TotalsCalculation合计行。DefinedName和DefinedNameCollection管理命名范围。Comment/CommentCollection与Hyperlink/HyperlinkCollection涵盖注释和导航。
技巧与最佳实践
- 将可变借用(
get_worksheets_mut,get_cells_mut)保持在作用域块内;块关闭后保存工作簿。 - 使用
get_by_index进行循环和生成布局;使用 A1 名称表示固定位置。 - 使用
StyleFlag应用样式,以免影响其他格式。 - 使用
DefinedName为重要范围命名,而不是硬编码地址。
常见问题
| 问题 | 原因 | 修复 |
|---|---|---|
| 保存工作簿时的借用错误 | 可变工作表的借用仍然存在 | 在调用 save 之前关闭作用域块 |
| 公式在 Excel 中显示为 0 | 未提供缓存值 | 使用 put_formula_with_cached_value 以获得预期结果 |
| 未找到工作表 | 名称不匹配 | 按索引地址或检查 set_name 拼写 |
FAQ
我该如何添加第二个工作表?
在工作簿上调用 add_worksheet,然后通过工作表集合按索引或名称获取它。
我可以在同一次操作中读取和写入吗?
是的 — 使用 Workbook::load_xlsx 加载,通过 get_worksheets_mut 进行修改,并使用 save 保存到相同或新的路径。
类型化的 setter 会转换值吗?
不进行任何转换:每个 put_value_* setter 存储其原生类型;display_string_value 在读取时渲染显示文本。
API Reference 摘要
| 类/方法 | 描述 |
|---|---|
Workbook.add_worksheet | 向工作簿添加工作表 |
Worksheet.set_name | 重命名工作表 |
Worksheet.get_cells_mut | 可变单元格集合 |
CellMut.put_value_string | 已键入的字符串设置器 |
CellMut.put_formula_with_cached_value | 公式及缓存结果 |
CellStyle | 字体、填充和边框格式设置 |
StyleFlag | 选择哪些样式方面适用 |
PageSetup | 打印和页面布局 |
ListObject | 结构化表格 |