網(wǎng)站用圖怎么做文件小質(zhì)量高推廣自己產(chǎn)品的文案
Rust使用calamine讀取已存在的test.xlsx文件全部數(shù)據(jù),還讀取指定單元格數(shù)據(jù);Rust使用rust_xlsxwriter創(chuàng)建新的output.xlsx文件,并寫入數(shù)據(jù)到指定單元格,然后再保存工作簿。
Cargo.toml
main.rs
/*rust讀取excel文件*/
use calamine::{open_workbook, DataType, Error, Reader, Xlsx};
//rust使用rust_xlsxwriter寫入excel文件
use rust_xlsxwriter::{Workbook, XlsxError};fn main() {let _ = read_excel();let _ = write_excel();
}// rust使用calamine庫讀取Excel
fn read_excel() -> Result<(), Error> {let file_path = "test.xlsx";// opens a new workbooklet mut workbook: Xlsx<_> = open_workbook(file_path).expect("Cannot open file");let mut worksheet = workbook.worksheet_range("Sheet1").expect("Cannot find 'Sheet1'");for (row_index, row) in worksheet.rows().enumerate() {// 遍歷每列并輸出內(nèi)容for (col_index, cell) in row.iter().enumerate() {// 獲取所有單元格的值println!("Sheet1 - Row {}, Column {} : {}",row_index + 1,col_index + 1,cell);/*// 獲取特定單元格的值(字符串類型)if let DataType::String(value) = cell {println!("Cell value at Sheet1 - Row {}, Column {} is '{}'",row_index + 1,col_index + 1,value);}*//*// 獲取所有單元格的值及類型println!("Sheet1 - Row {}, Column {} : {:?}",row_index + 1,col_index + 1,cell);DataType*/}/*//打印每行數(shù)據(jù)println!("{:?}", row);// 或者按需提取特定列的值let column1 = &row[0];let column2 = &row[1];*/}println!("------讀取指定單元格數(shù)值,(row_index=1,col_index=5)--------------");let option_value = worksheet.get_value((1, 5));// 使用 `.to_string()` 進行轉(zhuǎn)換if let Some(ref value) = option_value {println!("{}", value.to_string());} else {println!("None");}/*//備注:可以使用下面方法寫入數(shù)據(jù),也可以再次讀取出來,沒有找到保存數(shù)據(jù)方法,一旦關(guān)閉工作簿后,還是不能保存數(shù)據(jù),現(xiàn)在calamine庫只能讀取excel數(shù)據(jù),不支持寫入保存數(shù)據(jù)。println!("------設(shè)置指定單元格數(shù)值,(row_index=10,col_index=5)--------------");worksheet.set_value((10, 2), DataType::Float(39.8));println!("-------------------------------------------------------------");*/// 關(guān)閉工作簿drop(workbook);Ok(())
}// rust使用rust_xlsxwriter庫寫入Excel
fn write_excel() -> Result<(), XlsxError> {let file_name = "output.xlsx";let mut workbook2 = Workbook::new();let worksheet2 = workbook2.add_worksheet();worksheet2.write_string(2, 1, "Hello")?;//保存工作簿workbook2.save(file_name)?;//關(guān)閉工作簿drop(workbook2);Ok(())
}