C#窗体将DGV控件中数据导入导出Excel表

news2024/11/26 23:44:47

目录 

界面图:

 效果视频:

一:将DGV数据导出到Excel表中

二:将Excel表数据导入到DGV中

三:界面全部代码


界面图:

 效果视频:

DGV数据导入导出Excel

一:将DGV数据导出到Excel表中

 public void dgvtoexcel()
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.Filter = "Execl files (*.xls)|*.xls";
            saveFileDialog.FilterIndex = 0;
            saveFileDialog.RestoreDirectory = true;
            saveFileDialog.CreatePrompt = true;
            saveFileDialog.Title = "Export Excel File";
            saveFileDialog.ShowDialog();
            if (saveFileDialog.FileName == "")
                return;
            Stream myStream;
            myStream = saveFileDialog.OpenFile();
            StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));
            string str = "";
            try
            {
                for (int i = 0; i < dataGridView.Columns.Count; i++)
                {
                    if (i > 0)
                    {
                        str += "\t";
                    }
                    str += dataGridView.Columns[i].HeaderText;
                }
                sw.WriteLine(str);
                for (int j = 0; j < dataGridView.Rows.Count; j++)
                {
                    string tempStr = "";
                    for (int k = 0; k < dataGridView.Columns.Count; k++)
                    {
                        if (k > 0)
                        {
                            tempStr += "\t";
                        }
                        tempStr += dataGridView.Rows[j].Cells[k].Value.ToString();
                    }
                    sw.WriteLine(tempStr);
                }
                sw.Close();
                myStream.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                sw.Close();
                myStream.Close();
            }
        }

二:将Excel表数据导入到DGV中

 public void excelstodgv3()
        {
            /// <summary>
            /// 从excel文件读取内容
            /// </summary>
            /// <param name="fileName">excel文件名</param>
            /// <returns>获取读取数据的表</returns>
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "Excel Files|*.xlsx;*.xls";
            ofd.Title = "选着Excel文件";
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                string fileName = ofd.FileName;//路径名称

                Microsoft.Office.Interop.Excel.Application excelApp = null;
                Microsoft.Office.Interop.Excel.Workbooks wbks = null;
                Microsoft.Office.Interop.Excel._Workbook wbk = null;
                try
                {
                    excelApp = new Microsoft.Office.Interop.Excel.Application();
                    excelApp.Visible = false;//是打开不可见
                    wbks = excelApp.Workbooks;
                    wbk = wbks.Add(fileName);
                    object Nothing = Missing.Value;
                    Microsoft.Office.Interop.Excel._Worksheet whs;
                    whs = (Microsoft.Office.Interop.Excel._Worksheet)wbk.Sheets[1];//获取第一张工作表
                    whs.Activate();
                    System.Data.DataTable dt = new System.Data.DataTable(whs.Name);
                    //读取excel表格的列标题
                    int col_count = whs.UsedRange.Columns.Count;
                    for (int col = 1; col <= col_count; col++)
                    {
                        dt.Columns.Add(((Microsoft.Office.Interop.Excel.Range)whs.Cells[1, col]).Text.ToString());
                    }
                    //读取数据
                    for (int row = 2; row <= whs.UsedRange.Rows.Count; row++)
                    {
                        DataRow dr = dt.NewRow();
                        for (int col = 1; col <= col_count; col++)
                        {
                            dr[col - 1] = ((Microsoft.Office.Interop.Excel.Range)whs.Cells[row, col]).Text.ToString();
                        }
                        dt.Rows.Add(dr);
                    }
                    dataGridView1.DataSource = dt;
                }
                catch (Exception e)
                {
                    MessageBox.Show("异常:" + e);
                }
                finally
                {
                    //wbks.Close();//关闭工作簿
                    excelApp.Quit();//关闭excel应用程序
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);//释放excel进程
                    excelApp = null;
                }
            }

        }

三:界面全部代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WinCCAndCUserDemoTest
{
    public partial class Form6 : Form
    {
        public Form6()
        {
            InitializeComponent();
            intotwoadd();
        }

        /// <summary>
        /// 初始化twoadd
        /// </summary>
        public void intotwoadd()
        {
            //根据Header和所有单元格的内容自动调整行的高度
            dataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
            //设置内容对齐方式和字体 
            dataGridView.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            //dataGridView_Report.Font = new Font("宋体", 10);
            //设置所有单元格都不可编辑
            dataGridView.ReadOnly = true;
            //设置标题头列宽
            dataGridView.RowHeadersWidth = 15;
            //不可以增加空行
            dataGridView.AllowUserToAddRows = false;
            //添加表头
            for (int i = 0; i < 4; i++)
            {
                dataGridView.Columns.Add(new DataGridViewTextBoxColumn());
            }
            //指定标题列宽
            dataGridView.Columns[0].Width = 100;
            dataGridView.Columns[1].Width = 100;
            dataGridView.Columns[2].Width = 100;
            dataGridView.Columns[3].Width = 100;
            //添加标题字符
            dataGridView.Columns[0].HeaderText = "序号";
            dataGridView.Columns[1].HeaderText = "姓名";
            dataGridView.Columns[2].HeaderText = "性别";
            dataGridView.Columns[3].HeaderText = "班级";
        }

        private void button7_Click(object sender, EventArgs e)
        {
            //排除异常输入
            if (textBox_Name.Text == string.Empty || comboBox_Sex.Text == string.Empty || comboBox_Class.Text == string.Empty)
            {
                return;
            }
            //得到总行数 
            int num = dataGridView.Rows.Count;
            //向第一行插入一行数据
            this.dataGridView.Rows.Insert(0, 1);
            //写第一行第二列数据//插入名字
            this.dataGridView.Rows[0].Cells[1].Value = textBox_Name.Text;
            //写第一行第三列数据//插入性别
            this.dataGridView.Rows[0].Cells[2].Value = comboBox_Sex.Text;
            //写第一行第四列数据//插入班级
            this.dataGridView.Rows[0].Cells[3].Value = comboBox_Class.Text;
            //写第所有行第一列数据//插入显示序号
            for (int i = 0; i < num + 1; i++)
            {
                this.dataGridView.Rows[i].Cells[0].Value = i + 1;
            }
            //去除选择
            dataGridView.ClearSelection();

        }

        private void button11_Click(object sender, EventArgs e)
        {
            excelstodgv3();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            dgvtoexcel();
        }
        public void dgvtoexcel()
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.Filter = "Execl files (*.xls)|*.xls";
            saveFileDialog.FilterIndex = 0;
            saveFileDialog.RestoreDirectory = true;
            saveFileDialog.CreatePrompt = true;
            saveFileDialog.Title = "Export Excel File";
            saveFileDialog.ShowDialog();
            if (saveFileDialog.FileName == "")
                return;
            Stream myStream;
            myStream = saveFileDialog.OpenFile();
            StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));
            string str = "";
            try
            {
                for (int i = 0; i < dataGridView.Columns.Count; i++)
                {
                    if (i > 0)
                    {
                        str += "\t";
                    }
                    str += dataGridView.Columns[i].HeaderText;
                }
                sw.WriteLine(str);
                for (int j = 0; j < dataGridView.Rows.Count; j++)
                {
                    string tempStr = "";
                    for (int k = 0; k < dataGridView.Columns.Count; k++)
                    {
                        if (k > 0)
                        {
                            tempStr += "\t";
                        }
                        tempStr += dataGridView.Rows[j].Cells[k].Value.ToString();
                    }
                    sw.WriteLine(tempStr);
                }
                sw.Close();
                myStream.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                sw.Close();
                myStream.Close();
            }
        }

        public void excelstodgv3()
        {
            /// <summary>
            /// 从excel文件读取内容
            /// </summary>
            /// <param name="fileName">excel文件名</param>
            /// <returns>获取读取数据的表</returns>
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "Excel Files|*.xlsx;*.xls";
            ofd.Title = "选着Excel文件";
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                string fileName = ofd.FileName;//路径名称

                Microsoft.Office.Interop.Excel.Application excelApp = null;
                Microsoft.Office.Interop.Excel.Workbooks wbks = null;
                Microsoft.Office.Interop.Excel._Workbook wbk = null;
                try
                {
                    excelApp = new Microsoft.Office.Interop.Excel.Application();
                    excelApp.Visible = false;//是打开不可见
                    wbks = excelApp.Workbooks;
                    wbk = wbks.Add(fileName);
                    object Nothing = Missing.Value;
                    Microsoft.Office.Interop.Excel._Worksheet whs;
                    whs = (Microsoft.Office.Interop.Excel._Worksheet)wbk.Sheets[1];//获取第一张工作表
                    whs.Activate();
                    System.Data.DataTable dt = new System.Data.DataTable(whs.Name);
                    //读取excel表格的列标题
                    int col_count = whs.UsedRange.Columns.Count;
                    for (int col = 1; col <= col_count; col++)
                    {
                        dt.Columns.Add(((Microsoft.Office.Interop.Excel.Range)whs.Cells[1, col]).Text.ToString());
                    }
                    //读取数据
                    for (int row = 2; row <= whs.UsedRange.Rows.Count; row++)
                    {
                        DataRow dr = dt.NewRow();
                        for (int col = 1; col <= col_count; col++)
                        {
                            dr[col - 1] = ((Microsoft.Office.Interop.Excel.Range)whs.Cells[row, col]).Text.ToString();
                        }
                        dt.Rows.Add(dr);
                    }
                    dataGridView1.DataSource = dt;
                }
                catch (Exception e)
                {
                    MessageBox.Show("异常:" + e);
                }
                finally
                {
                    //wbks.Close();//关闭工作簿
                    excelApp.Quit();//关闭excel应用程序
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);//释放excel进程
                    excelApp = null;
                }
            }

        }

    }
}

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

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

相关文章

私人影院 - 本地搭建Emby媒体库服务器并在外远程访问 「无需公网IP」

文章目录 1.前言2. Emby网站搭建2.1. Emby下载和安装2.2 Emby网页测试 3. 本地网页发布3.1 注册并安装cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar内网穿透本地设置 4.公网访问测试5.结语 1.前言 在现代五花八门的网络应用场景中&#xff0c;观看视频绝对是主力应用场景之一&…

用ChatGPT问DotNet的相关问题,发现DotNet工程师的前景还不错

本人最近费了九牛二虎之力注册了一个ChatGPT账号&#xff0c;现在就给大家分享一下&#xff0c;问一下关于.NET的问题&#xff0c;看看ChatGPT的AI功能具体如何&#xff1f; 一、C#跟其它语言比较的优势 回答&#xff1a; C#是一门编程语言&#xff0c;它是为 Microsoft 的 …

【Linux】动态库与静态库

目录 一、前言 二、静态库与动态库 三、生成静态库 1、生成原理 2、完整过程 3、总结 四、生成动态库 1、环境变量 2、建立软链接 3、配置文件 五、动态库的加载 1、动态库加载的过程 2、动态库地址的理解 3、补充内容 一、前言 关于动态库与静态库的一小部分前置…

TCP的粘包和拆包

UDP有数据边界&#xff0c;TCP是没有数据边界&#xff0c;是流协议。如何拆包&#xff0c;就要靠应用层来处理。 四层网络模型&#xff0c;消息在进入每一层时都会多加一个报头。mac头部记录的是硬件的唯一地址&#xff0c;IP头记录的是从哪来和到哪去&#xff0c;传输层头记录…

GPT 护理机器人 - 让护士的工作变简单

引子    书接上文《GPT接入企微应用 - 让工作快乐起来》&#xff0c;我把GPT接入了企微应用&#xff0c;不少同事都开始尝试起来了。有的浅尝辄止&#xff0c;有的刨根问底&#xff0c;五花八门&#xff0c;无所不有。这里摘抄几份&#xff1a; “帮我写一份表白信&#xff…

Github 的使用

3. Github 在版本控制系统中&#xff0c;大约90%的操作都是在本地仓库中进行的&#xff1a;暂存&#xff0c;提交&#xff0c;查看状态或者历史记录等等。除此之外&#xff0c;如果仅仅只有你一个人在这个项目里工作&#xff0c;你永远没有机会需要设置一个远程仓库。只有当你…

嗯,这个树怎么和往常不一样?

文章目录 前言一、二叉树的链式存储二、二叉树链式结构的实现二叉树的结构设计手动构建二叉树二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历二叉树的层序遍历计算二叉树大小计算叶子节点个数计算二叉树高度计算第K层的节点个数查找某个值对应的节点二叉树的销毁 三、完整代…

全球首个存量手机直连卫星天地语音通话,打通了!

4月25日&#xff0c;美国卫星通信初创公司——AST SpaceMobile&#xff0c;宣布打通了全球首个天基蜂窝语音通话。 对于卫星通信乃至整个通信行业来说&#xff0c;这是一个重大新闻&#xff0c;非常值得关注。 去年&#xff0c;我们还只是实现了手机和卫星之间的双向短消息通信…

Page管理机制

Page页分类 Buffer Pool 的底层采用链表数据结构管理Page。在InnoDB访问表记录和索引时会在Page页中缓存&#xff0c;以后使用可以减少磁盘IO操作&#xff0c;提升效率 Page根据状态可以分为三种类型&#xff1a; - free page &#xff1a; 空闲page&#xff0c;未被使用 - …

1.3 HBase 基本架构

架构角色&#xff1a; 1&#xff09;Master 实现类为 HMaster&#xff0c;负责监控集群中所有的 RegionServer 实例。主要作用如下&#xff1a; &#xff08;1&#xff09;管理元数据表格 hbase:meta&#xff0c;接收用户对表格创建修改删除的命令并执行 &#xff08;2&#x…

【C++ Primer(第5版) 课后习题题目及答案 第一章】

C Primer5th 课后习题答案 第一章 1.1&#xff1a;查阅你使用的编译器的文档&#xff0c;确定它所使用的文件命名约定。编译并运行main程序。1.2&#xff1a;改写程序&#xff0c;让它返回-1。返回值-1通常被当作程序错误的标识。重新编译并运行你的程序&#xff0c;观察你的系…

C#弹出消息对话框,增加输入框,接受输入信息

效果图&#xff1a; 代码&#xff1a; using Microsoft.VisualBasic;string intext Interaction.InputBox("请输入密码","输入密码","",Screen.PrimaryScreen.Bounds.Width/4,Screen.PrimaryScreen.Bounds.Height/4);MessageBox.Show("in…

多商户商城系统开发功能有哪些?

多商户商城系统开发功能有哪些&#xff1f; 1、商品管理。商品管理是多商户商城系统的必备功能。商家需要能够轻松地添加、修改和删除商品。这个功能还应该包括商品图片、价格、描述和库存等信息的管理。消费者也需要能够通过小程序浏览商品并下订单。 2、订单管…

图形编辑器:历史记录设计

大家好&#xff0c;我是前端西瓜哥。今天讲一下图形编辑器如何实现历史记录&#xff0c;做到撤销重做。 其实就是版本号的更替。每个版本保存一个状态。 数据结构 要记录图形编辑器的历史记录&#xff0c;支持撤销重做功能&#xff0c;需要两个栈&#xff1a;撤销&#xff0…

【计算机网络】学习笔记:第三章 数据链路层【王道考研】持续更新中....

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ…

《编码——隐匿在计算机软硬件背后的语言》精炼——第14章(边沿触发器,计数器)

学习不是一次性的投资&#xff0c;而是一份长期稳定的收益。 文章目录 8位锁存器边沿触发器计数器改进的边沿触发器 8位锁存器 上篇文章讲到了1位存储器的组成&#xff0c;将8个1位存储器的时钟端连在一起就形成了一个8位锁存器&#xff0c;如下所示&#xff1a; 这个锁存器一…

vbscript+asp编写接口

1、前言 因为目前工作在对内网老系统用reactjava微服务进行升级改造&#xff0c;因为一些老的业务逻辑都是用vbscript编写的&#xff0c;很复杂&#xff0c;因此持久层和业务层代码不能动&#xff0c;以asp接口的形式给到数据。java接口调用asp接口&#xff0c;然后前端再调用j…

Elasticsearch --- DSL、RestClient查询文档、搜索结果处理

一、DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 1.1、DSL查询分类 Elasticsearch提供了基于JSON的DSL&#xff08;Domain Specific Language&#xff09;来定义查询。常见的查询类型包括&#xff1a; 查询所有&#xff1a;查询出所有数据&#xff0c…

他工作10年,老板却让他走人

大家好&#xff0c;我是五月&#xff0c;一个编程街溜子。 二狗被裁了&#xff0c;他在公司待了快十年&#xff0c;他想留下来&#xff0c;老板却让他走。 我和他一样困惑。 他985毕业&#xff0c;工作中有从0开始一个项目直到日活过千万&#xff0c;也有过参与顶级产品核心…

【数据结构】算法的时间复杂度和空间复杂度(含代码分析)

文章目录 一、算法的效率1.1 如何衡量一个算法的好坏1.2 算法的复杂度的概念 二、大O的渐进表示法三、时间复杂度2.1 时间复杂度的概念2.2常见时间复杂度计算举例 四、空间复杂度2.1 空间复杂度的概念2.2常见空间复杂度计算举例五、解决问题的思路LeetCode-exercise 总结 一、算…