21.2.2 保存

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。

如果打开某个Excel文件修改后,需要保存到原文件或者用新的文件名保存,在 Excel.Application.Quit() 前使用Workbook.Save() 或 Workbook.SaveAs(新文件名称) 就可以了。

但是对于要把数据(并非通过打开Excel文件获得的数据)保存成Excel文件,那么可以按照以下步骤:

1、新建了一个Application对象:

Microsoft.Office.Interop.Excel.Application xls = new Microsoft.Office.Interop.Excel.Application();

2、新建工作簿并添加到创建的Application对象:

Workbook Wbook = xls.Workbooks.Add();

3、 使用原有的工作表,一般默认创建Wbook后会有sheet1、sheet2、sheet3三个工作表,可以使用上一节方法指定一个工作表写数据。

或者新建工作表:

Worksheet Wsheet = Wbook.Worksheets.Add();

并按需要指定工作表名称,如不指定,那么新工作表默认名称为 Sheet4:

Wsheet.Name = "电脑销售表"

4、读取现有数据并写入单元格,需要注意的是Excel单元格的起始序号为1:

Wsheet.Cells[行号,列号].value = "值";

5、保存工作簿

Workbook.SaveAs(文件名称);

6、最后,别忘了关闭打开的 Excel:

xls.Quit();

【例 21.2【项目:code21-002】保存数据库表中的数据到Excel。

         //Northwind中查询产品表数据并显示到DataGridView

        private void Button1_Click(object sender, EventArgs e)

        {

            OleDbConnection connection = new OleDbConnection();

            connection.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;data source=c:\\lessons\\northwind.mdb;";

            //为简化,这里只取得了10条记录

            string CommandText = "select top 10 产品名称,单位数量,单价,库存量 from 产品";

            DataSet ds = new DataSet("Northwind");

            OleDbDataAdapter adapter = new OleDbDataAdapter();

            adapter.SelectCommand = new OleDbCommand();

            adapter.SelectCommand.CommandText = CommandText;

            adapter.SelectCommand.Connection = connection;

            System.Data.DataTable dt = ds.Tables.Add();

            dt.TableName = "产品";

            adapter.Fill(dt);

            DataGridView1.DataSource = ds.Tables["产品"];

            adapter.Dispose();

            connection.Close();

        }

       //另存为

        private void Button2_Click(object sender, EventArgs e)

        {

            string filename;

            SaveFileDialog sfd = new SaveFileDialog();

            sfd.Filter = "表格文件|*.xls;*.xlsx";

            if (sfd.ShowDialog() != DialogResult.OK)

                return;

            else

                filename = sfd.FileName;

            Microsoft.Office.Interop.Excel.Application xls = new Microsoft.Office.Interop.Excel.Application();

            Workbook Wbook;

            //使用Add方法新建一个工作簿

            Wbook = xls.Workbooks.Add();

            Worksheet Wsheet;

            Wsheet = Wbook.Worksheets.Add();

            //如果不新建工作表,可以使用默认工作表,比如:

            //Wsheet = Wbook.Worksheets[1];

            //设置工作表名称

            Wsheet.Name = "产品表";

            //处理列标题,写入Excel表第一行

            if (DataGridView1.Columns.Count > 1)

                for (int i = 0; i < DataGridView1.ColumnCount; i++)

                    Wsheet.Cells[1,i+1].Value = DataGridView1.Columns[i].HeaderText;

  

            if( DataGridView1.Rows.Count > 0)

            {

                for(int i = 0;i< DataGridView1.RowCount;i++)

                {

                    //注意:如果是新行的话,获取值会出错,这里把新行排除

                    //或者直接设置DataGridView1AllowUserToAddRows属性为false

                    if (DataGridView1.Rows[i].IsNewRow)

                        break;

                    for(int j = 0;j< DataGridView1.ColumnCount;j++)

                    {

                        //将数据写到Excel

                        //单元格行从索引2开始,而DataGridView1中的行数据从索引0开始,所以+2

                        //单元格列从索引1开始,而DataGridView1中的列数据从索引0开始,所以+1

                        Wsheet.Cells[i + 2, j + 1].value = DataGridView1.Rows[i].Cells[j].Value.ToString();

                    }

                }

            }

            //保存到指定文件

            Wbook.SaveAs(filename);

            //退出

            xls.Quit();

            MessageBox.Show("保存完毕");

        }

运行结果如下图所示:

图21-4 按下“保存”按钮后提示保存完毕

保存的Excel文件如下图所示:

图21-5 Excel中的数据

实际操作中如果不需要显示数据,可以不使用DataGridView控件,从数据库读数据后直接写入Excel。

学习更多vb.net知识,请参看vb.net 教程 目录

学习更多C#知识,请参看C#教程 目录

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于微信小程序的校园水电费管理平台设计与实现

目录 摘要 系统展示 技术介绍 MySQL数据库 Vue框架 代码实现 管理员实现登录后端代码 连接数据库 前端代码实现 获取源码 摘要 随着社会的发展&#xff0c;社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用…

基于springboot的体质测试数据分析及可视化设计

作者&#xff1a;学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等 文末获取“源码数据库万字文档PPT”&#xff0c;支持远程部署调试、运行安装。 项目包含&#xff1a; 完整源码数据库功能演示视频万字文档PPT 项目编码&#xff1…

离散时间傅里叶变换(DTFT)公式详解:周期性与连续性剖析

摘要 离散时间傅里叶变换&#xff08;DTFT&#xff09;是数字信号处理领域的重要工具&#xff0c;它能将离散时间信号从时域转换到频域&#xff0c;揭示信号的频率特性。本文将深入解读DTFT公式&#xff0c;详细阐述其具有周期性和连续性的原因&#xff0c;帮助读者全面理解DT…

Docker 安装详细教程(适用于CentOS 7 系统)

目录 步骤如下&#xff1a; 1. 卸载旧版 Docker 2. 配置 Docker 的 YUM 仓库 3. 安装 Docker 4. 启动 Docker 并验证安装 5. 配置 Docker 镜像加速 总结 前言 Docker 分为 CE 和 EE 两大版本。CE即社区版&#xff08;免费&#xff0c;支持周期7个月&#xff09;&#xf…

Mac mini m4本地跑大模型(ollama + llama + ComfyUI + Stable Diffusion | flux)

change log 2024-12-11 10:28&#xff08;推荐重新观看&#xff09; 针对绘画大模型的使用做进一步的详细操作&#xff08;flux1dev&#xff09; 见篇节&#xff08;绘画大模型&#xff09; 2024-12-10 更新了基础的chat大模型和绘画大模型的基础环境搭建。 安装chat大模型&am…

基于PLC的电热水器的水箱水位控制系统(论文+源码

1总体方案设计 本设计基于PLC的电热水器的水箱水位控制系统的整体结构如图2.1所示&#xff0c;系统采用S7-1200 PLC为控制器&#xff0c;可以实现电热水器水箱中的水位、水温检测&#xff0c;并且用户可以设定目标水位和水温&#xff0c;在自动模式下&#xff0c;当水位低于低…

专业学习|一文了解并实操自适应大邻域搜索(讲解代码)

一、自适应大邻域搜索概念介绍 自适应大邻域搜索&#xff08;Adaptive Large Neighborhood Search&#xff0c;ALNS&#xff09;是一种用于解决组合优化问题的元启发式算法。以下是关于它的详细介绍&#xff1a; -自适应大领域搜索的核心思想是&#xff1a;破坏解、修复解、动…

【Leetcode】4. 寻找两个正序数组的中位数

一、题目描述 给定两个大小分别为 m m m 和 n n n 的正序&#xff08;从小到大&#xff09;数组 n u m s 1 nums1 nums1 和 n u m s 2 nums2 nums2。请你找出并返回这两个正序数组的中位数 。 算法的时间复杂度应该为 O ( l o g ( m n ) ) O(log (mn)) O(log(mn)) 。 示…

如何优化垃圾回收机制?

垃圾回收机制 掌握 GC 算法之前&#xff0c;我们需要先弄清楚 3 个问题。第一&#xff0c;回收发生在哪里&#xff1f;第二&#xff0c;对象在 什么时候可以被回收&#xff1f;第三&#xff0c;如何回收这些对象&#xff1f; 回收发生在哪里&#xff1f; JVM 的内存区域中&…

吴签磁力_简单多功能的磁力搜索工具

磁力搜索&#xff0c;一个比较冷门的话题&#xff0c;但是它能解决我们对于音乐、影视、游戏、软件等资源的需求&#xff0c;今天给大家安利一款深夜学习必备的磁力搜索引擎——吴签磁力。 “吴签磁力”是一款集搜索、下载于一体的多功能磁力搜索引擎&#xff0c;它巧妙地将百度…

spring基础总结

先修知识&#xff1a;依赖注入&#xff0c;反转控制&#xff0c;生命周期 IDEA快捷键 Ctrl Altm:提取方法&#xff0c;设置trycatch 通用快捷键&#xff1a; Ctrl F&#xff1a;在当前文件中查找文本。Ctrl R&#xff1a;在当前文件中替换文本。Ctrl Z&#xff1a;撤销…

MyBatis XML文件配置

目录 一、 配置连接字符串和MyBatis 二、书写持久层代码 2.1 添加Mapper接口 2.2 添加UserlnfoXMLMapper.xml 三、增删改查 3.1 、增&#xff08;Insert&#xff09; 3.2、删&#xff08;Delete) 3.3、改 (Update) 3.4、查 (Select) MyBatisXML的方式需要以下两步&am…

QT:对象树

1.概念 Qt 中的对象树是一种以树形结构组织 Qt 对象的方式。当创建一个QObject&#xff08;Qt 中大多数类的基类&#xff09;或其派生类的对象时&#xff0c;可以为其指定一个父对象&#xff08;parent&#xff09;。这个对象就会被添加到其父对象的子对象列表中&#xff0c;形…

设备通过国标GB28181接入EasyCVR,显示在线但视频无法播放的原因排查

安防监控EasyCVR平台支持多种视频源接入&#xff0c;包括但不限于IP摄像头、NVR、编码器、流媒体服务器等。平台采用高效的视频流接入技术&#xff0c;支持大规模视频流的并发接入&#xff0c;确保视频流的稳定性和流畅性。 有用户反馈&#xff0c;项目现场使用国标GB28181接入…

本地安装部署deepseek

在截图下载工具(地址不方便粘贴过不审核)复制安装程序链接下载模型管理工具ollama&#xff0c;下一步下一步&#xff0c;有需要也可以下载linux版的 githup&#xff1a;https://github.com/ollama/ollama/releases/tag/v0.5.7 安装程序&#xff1a;https://github.com/ollama…

熟练掌握Http协议

目录 基本概念请求数据Get请求方式和Post请求方式 响应数据响应状态码 基本概念 Http协议全称超文本传输协议(HyperText Transfer Protocol)&#xff0c;是网络通信中应用层的协议&#xff0c;规定了浏览器和web服务器数据传输的格式和规则 Http应用层协议具有以下特点&#…

在Mapbox GL JS中“line-pattern”的使用详解

在Mapbox GL JS中&#xff0c;line-pattern 是一种用于在地图上绘制带有图案的线条的样式属性。通过 line-pattern&#xff0c;你可以使用自定义的图像作为线条的图案&#xff0c;而不是使用纯色或渐变。 1. 基本概念 line-pattern: 该属性允许你指定一个图像作为线条的图案。…

QT:信号和槽

目录 1.概念 2.信号和槽的使用 2.1代码的方式使用 2.1.1.使用connect关联 2.2图形化界面的方式使用 2.2.1使用流程 2.2.2使用名字关联槽函数 3.自定义信号和槽函数 3.1自定义槽函数 3.2自定义信号 4.总结 1.概念 信号和槽是QT特有的一种机制&#xff0c;信号和槽都是…

【数据分析】豆瓣电影Top250的数据分析与Web网页可视化(numpy+pandas+matplotlib+flask)

豆瓣电影Top250的数据分析与Web网页可视化(numpy+pandas+matplotlib+flask) 豆瓣电影Top250官网:https://movie.douban.com/top250写在前面 实验目的:实现豆瓣电影Top250详情的数据分析与Web网页可视化。电脑系统:Windows使用软件:PyCharm、NavicatPython版本:Python 3.…

simpleQtLogger日志库的使用

simpleQtLogger日志库的使用 simpleQtLogger日志库的使用1. 使用2. 修改点控制台中文乱码修复qt6没有setCodec()修复void*强转数值修复打印日志级别修改 simpleQtLogger日志库的使用 B站上看到一个简单的qt日志库&#xff0c;这里记录一下它的使用。 但是我并不知道源码是谁写…