Rust使用calamine读取excel文件,Rust使用rust_xlsxwriter写入excel文件

news2025/1/23 6:13:50

Rust使用calamine读取已存在的test.xlsx文件全部数据,还读取指定单元格数据;Rust使用rust_xlsxwriter创建新的output.xlsx文件,并写入数据到指定单元格,然后再保存工作簿。

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 workbook
    let 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() {
        // 遍历每列并输出内容
        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
            */
        }

        /*
        //打印每行数据
        println!("{:?}", row);

        // 或者按需提取特定列的值
        let column1 = &row[0];
        let column2 = &row[1];
        */
    }

    println!("------读取指定单元格数值,(row_index=1,col_index=5)--------------");
    let option_value = worksheet.get_value((1, 5));
    // 使用 `.to_string()` 进行转换
    if let Some(ref value) = option_value {
        println!("{}", value.to_string());
    } else {
        println!("None");
    }

    /*
    //备注:可以使用下面方法写入数据,也可以再次读取出来,没有找到保存数据方法,一旦关闭工作簿后,还是不能保存数据,现在calamine库只能读取excel数据,不支持写入保存数据。
    println!("------设置指定单元格数值,(row_index=10,col_index=5)--------------");
    worksheet.set_value((10, 2), DataType::Float(39.8));
    println!("-------------------------------------------------------------");
    */

    // 关闭工作簿
    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)?;
    //关闭工作簿
    drop(workbook2);

    Ok(())
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1474729.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mac/windows git ssh 配置多平台账号(入门篇)

目录 引子多账号多平台配置git一、.ssh文件夹路径1.1 mac 系统1.2 windows 系统 二、生成new ssh2.1 mac系统2.2 windows 系统 三、配置 config四、验证五、用ssh方式拉取远程仓库代码 引子 push代码到github仓库时&#xff0c;提示报错。 Push failed Remote: Support for pa…

力扣5. 最长回文子串(双指针、动态规划)

Problem: 5. 最长回文子串 文章目录 题目描述思路复杂度Code 题目描述 思路 思路1&#xff1a;双指针 1.我们利用双指针从中间向两边扩散来判断是否为回文串&#xff0c;则关键是找到以s[i]为中心的回文串&#xff1b; 2.我们编写一个函数string palindrome(string &s, in…

project.config.json 文件内容错误] project.config.json: libVersion 字段需为 string, string

家人们&#xff0c;遇到了一个新的报错 于是从网上找了各种方法&#xff0c;有说把开发者工具关闭重启的&#xff0c;有说开发者工具下载重新下载的&#xff0c;有说开发者工具路径安装得在C盘的&#xff0c;均没有效果 解决方法&#xff1a; 1、运行项目&#xff0c;在开发者…

基于springboot的4S店车辆管理系统源码和论文

随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&#xf…

045-WEB攻防-PHP应用SQL二次注入堆叠执行DNS带外功能点黑白盒条件

045-WEB攻防-PHP应用&SQL二次注入&堆叠执行&DNS带外&功能点&黑白盒条件 #知识点&#xff1a; 1、PHP-MYSQL-SQL注入-二次注入&利用条件 2、PHP-MYSQL-SQL注入-堆叠注入&利用条件 3、PHP-MYSQL-SQL注入-带外注入&利用条件 演示案例&#xff1a…

分布式锁的应用与疑惑

文章目录 一、为什么需要用分布式锁二、Redis实现分布式锁三、Zookeeper实现分布式锁 一、为什么需要用分布式锁 集群下&#xff0c;普通的锁&#xff0c;无法解决问题 集群下&#xff0c;保证安全需要使用分布式锁 二、Redis实现分布式锁 Redisson内部封装的RedLock实现分…

Linux系统--nginx

1.Nginx(engine-x)由俄罗斯开发者Igor Sysoev开发&#xff0c;最初于2004年发布&#xff0c;主要用于解决C10K问题&#xff08;即同时处理上万个并发连接&#xff09;。其设计目标是实现高并发、低延迟以及高效利用硬件资源。Nginx不仅是一个静态内容服务器&#xff0c;还支持动…

Bert-as-service 学习

pip3 install --user --upgrade tensorflow 安装遇到的问题如下&#xff1a; pip3 install --user --upgrade tensorflow 1052 pip uninstall protobuf 1053 pip3 uninstall protobuf 1054 pip3 install protobuf3.20.* 1055 pip3 install open-clip-torch2.8.2 1…

SQL注入漏洞解析-less-8(布尔盲注)

我们来看一下第八关 当我们进行尝试时&#xff0c;他只有You are in...........或者没有显示。 他只有对和错显示&#xff0c;那我们只能用对或者错误来猜他这个数据库 ?id1%27%20and%20ascii(substr(database(),1,1))>114-- ?id1%27%20and%20ascii(substr(database(),1,…

解决i18n国际化可读性问题,傻瓜式webpack中文支持国际化插件开发

先来看最后的效果 问题 用过国际化i18n的朋友都知道&#xff0c;天下苦国际化久矣&#xff0c;尤其是中文为母语的开发者&#xff0c;在面对代码中一堆的$t(abc.def)这种一点也不直观毫无可读性的代码&#xff0c;根本不知道自己写了啥 &#xff08;如上图&#xff0c;你看得出…

飞天使-学以致用-devops知识点1-安装gitlabharbor

文章目录 rpm 安装gitlab页面配置配置secretsecret 查看信息-chatgpt回复 为项目配置webhook,等jenkins部署完毕后在配置卸载 harbor配置secret所有k8s集群节点安装信任 http rpm 安装gitlab # 下载安装包 wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitla…

HP笔记本电脑如何恢复出厂设置?这里提供几种方法

要恢复出厂设置Windows 11或10的HP笔记本电脑,你可以使用操作系统的标准方法。如果你运行的是早期版本,你可以使用HP提供的单独程序清除计算机并重新安装操作系统。 恢复出厂设置运行Windows 11的HP笔记本电脑​ 所有Windows 11计算机都有一个名为“重置此电脑”的功能,可…

行为树入门:BehaviorTree.CPP Groot2练习(叶子节点)(2)

以《行为树BehaviorTree学习记录1_基本概念》练习。 1 SequenceNode顺序控制节点 代码下载 git clone https://gitee.com/Luweizhiyuan2020/ros2_bt.git例程 1.1 sequence 顺序执行 下载版本SequenceNode1。 1.2 ReactiveSequence 异步执行 注意&#xff1a; ①only a…

【k8s配置与存储--持久化存储(PV、PVC、存储类)】

1、PV与PVC 介绍 持久卷&#xff08;PersistentVolume&#xff0c;PV&#xff09; 是集群中的一块存储&#xff0c;可以由管理员事先制备&#xff0c; 或者使用存储类&#xff08;Storage Class&#xff09;来动态制备。 持久卷是集群资源&#xff0c;就像节点也是集群资源一样…

13.云原生之常用研发中间件部署

云原生专栏大纲 文章目录 mysql主从集群部署mysql高可用集群高可用互为主从架构互为主从架构如何实现主主复制中若是两台master上同时出现写操作可能会出现的问题该架构是否存在问题&#xff1f; heml部署mysql高可用集群 nacos集群部署官网文档部署nacoshelm部署nacos redis集…

Windows系统x86机器安装(麒麟、统信)ARM系统详细教程

本次介绍在window系统x86机器上安装国产系统 arm 系统的详细教程。 注:ubuntu 的arm系统安装是一样的流程。 1.安装环境准备。 首先,你得有台电脑,配置别太差,至少4核8G内存,安装window10或者11都行(为啥不能是Window7,你要用也不是不行,你先解决win7补丁更新问题)。…

高效网络采集实践:使用 Haskell 和 html-conduit 下载 www.baidu.com 视频完整教程

一、引言 网络采集在当今信息时代中发挥着关键作用&#xff0c;用于从互联网上获取数据并进行分析。本文将介绍如何使用 Haskell 进行网络编程&#xff0c;从数据采集到图片分析&#xff0c;为你提供一个清晰的指南。我们将探讨如何使用爬虫代理来确保高效、可靠的数据获取&am…

Kubernetes剖析

Kubernetes剖析 前言 ​ 容器技术这样一个新生事物&#xff0c;完全重塑了整个云计算市场的形态。它不仅催生出了一批年轻有为的容器技术人&#xff0c;更培育出了一个具有相当规模的开源基础设施技术市场。 ​ 在这个市场里&#xff0c;不仅有 Google、Microsoft 等技术巨擘…

爬取某牙视频

爬取页面链接&#xff1a;游戏视频_游戏攻略_虎牙视频 爬取步骤&#xff1a;点进去一个视频播放&#xff0c;查看media看有没有视频&#xff0c;发现没有。在xhr中发现有许多ts文件&#xff0c;但这种不是很长的视频一般都有直接的播放链接&#xff0c;所以目标还是找直接的链…

自定义神经网络一之Tensor和神经网络

文章目录 前言Tensor神经网络深度神经网络DNN卷积神经网络CNN卷积神经网络有2大特点 循环神经网络RNN残差网络ResNetTransformer自我注意力机制并行效率 总结 前言 神经网络是AI界的一个基础概念&#xff0c;当下火热的神经网络例如RNN循环神经网络或者CNN卷积神经网络&#x…