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

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.kler.cn/a/533463.html

相关文章:

  • DeepSeek:全栈开发者视角下的AI革命者
  • 2. 【.NET Aspire 从入门到实战】--理论入门与环境搭建--.NET Aspire 概览
  • 【单细胞-第三节 多样本数据分析】
  • openRv1126 AI算法部署实战之——Tensorflow模型部署实战
  • Vue.js组件开发-实现图片浮动效果
  • Qt网络相关
  • BUU19 [BJDCTF2020]Easy MD51
  • 企业四要素如何用PHP进行调用
  • 在ubuntu22.04上先部署docker,再编译安装kamailio,附详细操作流程及docker和makailio的版本号
  • Junit5使用教程(5)
  • openai agent第二弹:deepresearch原理介绍
  • P5524 [Ynoi2012] NOIP2015 充满了希望 Solution
  • MySQL 事件调度器(Event Scheduler)的使用
  • 在Debian 12上安装VNC服务器
  • 【mysql知识】mysql的存储过程详细说明
  • WordPressAI自动生成发布文章免费插件,SEO,定时任务,生成长尾关键词、根据网站主题内容全自动化后台生成发布文章
  • 小程序越来越智能化,作为设计师要如何进行创新设计
  • 智能化转型2.0:从“工具应用”到“价值重构”
  • Spring 核心技术解析【纯干货版】- IX:Spring 数据访问模块 Spring-Jdbc 模块精讲
  • C# OpenCV机器视觉:学生注意力监测
  • Android 整个屏幕可滑动,tab,viewpage是列表,tab不锁在顶
  • 如何在自己mac电脑上私有化部署deep seek
  • [Android] IKTV专享版
  • Meta推动虚拟现实:Facebook如何进入元宇宙时代
  • 107,【7】buuctf web [CISCN2019 华北赛区 Day2 Web1]Hack World
  • JavaScript(简称:js)