xlsx_utils.rs 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. use std::collections::BTreeMap;
  2. use rust_xlsxwriter::*;
  3. pub fn creation_xlsx(one_row_name: &Vec<&str>, data_rows: &BTreeMap<String, Vec<Vec<String>>>, file_name: String) -> Result<(), XlsxError> {
  4. // 创建一个新的Excel文件对象。
  5. let mut workbook = Workbook::new();
  6. for (key, value) in data_rows {
  7. // 向工作簿中添加工作表。
  8. let worksheet = workbook.add_worksheet();
  9. worksheet.set_name(key).unwrap();
  10. // 第一行 列,明
  11. let mut row_index: usize = 0;
  12. let mut i: usize = 0;
  13. let bold_format = Format::new().set_bold();
  14. while i <= one_row_name.len() - 1 {
  15. worksheet.write_with_format(row_index as RowNum, i as ColNum, one_row_name[i], &bold_format)?;
  16. i = i + 1;
  17. }
  18. //后续 数据写入
  19. row_index = 1;
  20. while row_index <= value.len() {
  21. let row = value.get(row_index - 1).unwrap();
  22. i = 0;
  23. for str in row {
  24. worksheet.write(row_index as RowNum, i as ColNum, str)?;
  25. i = i + 1;
  26. }
  27. row_index = row_index + 1;
  28. }
  29. }
  30. //
  31. // for row in one_row_name {}
  32. // // 写一个不带格式的字符串。
  33. // worksheet.write(0, 0, "Hello")?;
  34. //
  35. //
  36. // // 创建一些要在工作表中使用的格式。
  37. // let bold_format = Format::new().set_bold();
  38. // let decimal_format = Format::new().set_num_format("0.000");
  39. // let date_format = Format::new().set_num_format("yyyy-mm-dd");
  40. // let merge_format = Format::new()
  41. // .set_border(FormatBorder::Thin)
  42. // .set_align(FormatAlign::Center);
  43. //
  44. //
  45. // // 为清晰设置列宽度。
  46. // worksheet.set_column_width(0, 22)?;
  47. //
  48. // // 写一个不带格式的字符串。
  49. // worksheet.write(0, 0, "Hello")?;
  50. //
  51. // // 用上面定义的粗体格式编写一个字符串。
  52. // worksheet.write_with_format(1, 0, "World", &bold_format)?;
  53. //
  54. // //
  55. // worksheet.write(2, 0, 1)?;
  56. // worksheet.write(3, 0, 2.34)?;
  57. //
  58. // // 用格式写一个数字。
  59. // worksheet.write_with_format(4, 0, 3.00, &decimal_format)?;
  60. //
  61. // // 写一个公式。
  62. // worksheet.write(5, 0, Formula::new("=SIN(PI()/4)"))?;
  63. //
  64. // // 写一个日期。
  65. // let date = ExcelDateTime::from_ymd(2023, 1, 25)?;
  66. // worksheet.write_with_format(6, 0, &date, &date_format)?;
  67. //
  68. // //写一些链接。
  69. // worksheet.write(7, 0, Url::new("https://www.rust-lang.org"))?;
  70. // worksheet.write(8, 0, Url::new("https://www.rust-lang.org").set_text("Rust"))?;
  71. // 写入一些合并的单元格。
  72. // worksheet.merge_range(9, 0, 9, 1, "Merged cells", &merge_format)?;
  73. // Insert an image.
  74. // let image = Image::new("examples/rust_logo.png")?;
  75. // worksheet.insert_image(1, 2, &image)?;
  76. // 生成文件
  77. let path = format!("./{}.xlsx", file_name);
  78. workbook.save(path)?;
  79. Ok(())
  80. }