当前位置: 首页 > article >正文

【ArcGIS Pro二次开发】(12):txt文件和Excel文件的读写

在Arcgis Pro的工作流中,数据的输入是很常见的。这里以TXT和Excel两种文件为例,在SDK中实现数据的读取和写入。


一、txt文件的读写

txt文件的读写相对简单,可以用Arcgis Pro自带的OpenItemDialog打开txt文件,并直接读取,不需要额外的程序集引用。

1、txt文件内容的读取

下面的例子实现的内容:

通过OpenItemDialog打开指定的txt文件,读取文件第3行的文本,并以消息框提示文本内容。

            // 打开文件对话框
            OpenItemDialog dlg = new OpenItemDialog()
            {
                Title = "选择要打开的文本文件",
                Filter = ItemFilters.TextFiles,
                MultiSelect = false,
            };
            // 如果用户单击“确定”按钮
            if (dlg.ShowDialog() == true)
            {
                // 获取所选文件的完整路径
                string filePath = dlg.Items[0].Path;
                // 读取文件的所有行
                string[] lines = File.ReadAllLines(filePath, Encoding.Default);
                // 如果文件至少有3行
                if (lines.Length >= 3)
                {
                    // 获取第3行的内容
                    string line3 = lines.Length >= 3 ? lines[2] : "该文件不足3行。";
                    // 显示第3行的内容
                    MessageBox.Show("第3行的内容是:" + "\r\n" + line3);
                }
                else
                {
                    // 如果文件不足3行,提示用户
                    MessageBox.Show("该文件不足3行。");
                }
            }

2、txt文件内容的写入

下面的例子实现的内容:

通过OpenItemDialog打开指定的txt文件,在文本的第3行后面插入一行标记文本。

            // 打开文件对话框
            OpenItemDialog dlg = new OpenItemDialog()
            {
                Title = "选择要打开的文本文件",
                Filter = ItemFilters.TextFiles,
                MultiSelect = false,
            };
            // 如果用户单击“确定”按钮
            if (dlg.ShowDialog() == true)
            {
                // 获取所选文件的完整路径
                string filePath = dlg.Items[0].Path;
                // 读取文件的所有行
                string[] lines = File.ReadAllLines(filePath, Encoding.Default);
                // 如果文件至少有3行
                if (lines.Length >= 3)
                {
                    string insertStr = "标记:这是插入内容!";
                    // 在第1行后面插入“标记:这是第一行”
                    lines[2] += $"\r\n{insertStr}";
                    // 将修改后的内容写回文件
                    File.WriteAllLines(filePath, lines);
                    // 显示第3行的内容
                    MessageBox.Show("在第3行后添加内容:" + $"\r\n{insertStr}");
                }
                else
                {
                    // 如果文件不足3行,提示用户
                    MessageBox.Show("该文件不足3行。");
                }
            }

二、Excel文件的读写

Excel文件的读写会复杂一些,首先,需要保证你的电脑上装有Office的Excel,然后添加(勾选)程序集Microsoft Office x.0 Object Library,版本根据你装的Office版本而定。

然后再添加2行using,准备工作完成。

using Microsoft.Office.Interop.Excel;
using Button = ArcGIS.Desktop.Framework.Contracts.Button;

1、Excel文件内容的读取

下面的例子实现的内容:

由于OpenItemDialog不能筛选Excel文件,所以用OpenFileDialog打开指定的Excel文件。(这里虽然后缀名为xls或xlsx,但是建议用xlsx,可以免去一些保存过程中的麻烦)。

后面就是固定流程:建立Excel应用程序对象,打开Excel文件,获取工作表(第一个表),读取指定单元格内容。

最后关闭Excel文件(不保存)和应用程序对象。

            // 定义打开文件对话框
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "Excel 文档 (*.xls;*.xlsx)|*.xls;*.xlsx";
            openFileDialog.Multiselect = false;
            openFileDialog.RestoreDirectory = true;
            if (openFileDialog.ShowDialog() == true)
            {
                // 获取文件路径和名称
                string filePath = openFileDialog.FileName;
                // 建立 Excel 应用程序对象
                Application excelApp = new Application();
                // 打开 Excel 文件
                Workbook workbook = excelApp.Workbooks.Open(filePath);
                // 获取工作表
                Worksheet worksheet = workbook.Worksheets[1];
                // 读取单元格内容
                Microsoft.Office.Interop.Excel.Range range = worksheet.Range["C4"];
                string value = range.Value.ToString();
                // 关闭 Excel 文件和应用程序对象
                workbook.Close(false);
                excelApp.Quit();
                MessageBox.Show($"C4单元格的内容为:{value}");
            }

2、Excel文件内容的写入

下面的例子实现的内容:

用OpenFileDialog打开指定的Excel文件,获取工作表,修改指定单元格内容。

最后关闭Excel文件(保存)和应用程序对象。

            // 定义打开文件对话框
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "Excel 文档 (*.xls;*.xlsx)|*.xls;*.xlsx";
            openFileDialog.Multiselect = false;
            if (openFileDialog.ShowDialog() == true)
            {
                // 获取文件路径和名称
                string filePath = openFileDialog.FileName;
                // 建立 Excel 应用程序对象
                Application excelApp = new Application();
                // 打开 Excel 文件
                Workbook workbook = excelApp.Workbooks.Open(filePath);
                // 获取工作表
                Worksheet worksheet = workbook.Worksheets[1];
                // 修改单元格的值
                worksheet.Range["C4"].Value = "标记内容";
                //  保存并关闭 Excel 文件和应用程序对象
                workbook.Close(true);
                excelApp.Quit();
                MessageBox.Show($"C4单元格的内容已被修改!");
            }

Excel操作内容比较多,这里只简单介绍了读写操作,其它的删除行、删除列、增加行、增加列、按表名获取表,新建表,合并单元格,取消合并格等,等以后完全研究明白,再单独记一篇笔记。

PS:Office的其它文件,如Word的操作,和Office Excel也比较类似,目前用的不多,就不详述了。


三、工程文件分享

 最后,放上工程文件的链接:

RWFilehttps://pan.baidu.com/s/1vdkukUJHtp60ltdIWiiS6w?pwd=235f

PS:可以直接点击...bin\Debug\net6.0-windows\下的.esriAddinX文件直接安装。


http://www.kler.cn/a/7651.html

相关文章:

  • # 第20章 Cortex-M4-触摸屏
  • 机器学习 决策树
  • CSP-X2024山东小学组T2:消灭怪兽
  • 金融领域先锋!海云安成功入选2024年人工智能先锋案例集
  • 深入解析 MySQL 数据库:数据库时区问题
  • 路漫漫其修远兮,吾将上下而求索---第一次使用github的过程记录和个人感受
  • Java稀疏数组的应用
  • BERT: Pre-training of Deep Bidirectional Transformers forLanguage Understanding
  • 单例模式何以保证线程安全
  • Less 运行环境
  • ChatGPT能够干翻谷歌吗?
  • 蓝桥杯备考
  • 【Python】如何实现Redis构造简易客户端(教程在这)
  • 学习 Python 之 Pygame 开发魂斗罗(十四)
  • Visual Studio Code 1.77 发布,扩展的 GitHub Copilot 集成
  • ArduPilot飞控之DIY-F450计划
  • JayDeBeApi对数据类型的支持
  • Linux- 系统随你玩之--玩出花活的命令浏览器上
  • 360周鸿祎离婚老婆能分得90亿,如果奶茶妹妹离婚会不会分走更多?
  • 7-6 莫比乌斯最大值isUsefulAlgorithm(2023郑州轻工业大学校赛
  • 【论文阅读】如何给模型加入先验知识
  • 本地生活服务,快手直播电商外的又一大金矿!
  • 集成华为运动健康服务干货总览
  • 不敲代码用ChatGPT开发一个App
  • ABC206F Interval Game 2
  • python实现一个创建日志收集器代码