use std::collections::BTreeMap; use rust_xlsxwriter::*; pub fn creation_xlsx(one_row_name: &Vec<&str>, data_rows: &BTreeMap>>, file_name: String) -> Result<(), XlsxError> { // 创建一个新的Excel文件对象。 let mut workbook = Workbook::new(); for (key, value) in data_rows { // 向工作簿中添加工作表。 let worksheet = workbook.add_worksheet(); worksheet.set_name(key).unwrap(); // 第一行 列,明 let mut row_index: usize = 0; let mut i: usize = 0; let bold_format = Format::new().set_bold(); while i <= one_row_name.len() - 1 { worksheet.write_with_format(row_index as RowNum, i as ColNum, one_row_name[i], &bold_format)?; i = i + 1; } //后续 数据写入 row_index = 1; while row_index <= value.len() { let row = value.get(row_index - 1).unwrap(); i = 0; for str in row { worksheet.write(row_index as RowNum, i as ColNum, str)?; i = i + 1; } row_index = row_index + 1; } } // // for row in one_row_name {} // // 写一个不带格式的字符串。 // worksheet.write(0, 0, "Hello")?; // // // // 创建一些要在工作表中使用的格式。 // let bold_format = Format::new().set_bold(); // let decimal_format = Format::new().set_num_format("0.000"); // let date_format = Format::new().set_num_format("yyyy-mm-dd"); // let merge_format = Format::new() // .set_border(FormatBorder::Thin) // .set_align(FormatAlign::Center); // // // // 为清晰设置列宽度。 // worksheet.set_column_width(0, 22)?; // // // 写一个不带格式的字符串。 // worksheet.write(0, 0, "Hello")?; // // // 用上面定义的粗体格式编写一个字符串。 // worksheet.write_with_format(1, 0, "World", &bold_format)?; // // // // worksheet.write(2, 0, 1)?; // worksheet.write(3, 0, 2.34)?; // // // 用格式写一个数字。 // worksheet.write_with_format(4, 0, 3.00, &decimal_format)?; // // // 写一个公式。 // worksheet.write(5, 0, Formula::new("=SIN(PI()/4)"))?; // // // 写一个日期。 // let date = ExcelDateTime::from_ymd(2023, 1, 25)?; // worksheet.write_with_format(6, 0, &date, &date_format)?; // // //写一些链接。 // worksheet.write(7, 0, Url::new("https://www.rust-lang.org"))?; // worksheet.write(8, 0, Url::new("https://www.rust-lang.org").set_text("Rust"))?; // 写入一些合并的单元格。 // worksheet.merge_range(9, 0, 9, 1, "Merged cells", &merge_format)?; // Insert an image. // let image = Image::new("examples/rust_logo.png")?; // worksheet.insert_image(1, 2, &image)?; // 生成文件 let path = format!("./{}.xlsx", file_name); workbook.save(path)?; Ok(()) }