c#读取excel表格数据到datagridview中和导出datagridview中的数据到excel

孔小爽 孔小爽     2022-08-13     793

关键词:

  1. 其实想在datagridview中显示excel表格中的数据跟读取数据库中的数据没什么差别,只不过是创建数据库连接的时候连接字段稍有差别。
private void btnShow_Click(object sender, EventArgs e)
        {
            OpenFileDialog fd = new OpenFileDialog();//首先根据打开文件对话框,选择excel表格
            fd.Filter = "表格|*.xls";//打开文件对话框筛选器
            string strPath;//文件完整的路径名
            if (fd.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    strPath = fd.FileName;
                    string strCon = "provider=microsoft.jet.oledb.4.0;data source=" + strPath + ";extended properties=excel 8.0";//关键是红色区域
                    OleDbConnection Con = new OleDbConnection(strCon);//建立连接
                    string strSql = "select * from [Sheet1$]";//表名的写法也应注意不同,对应的excel表为sheet1,在这里要在其后加美元符号$,并用中括号
                    OleDbCommand Cmd = new OleDbCommand(strSql, Con);//建立要执行的命令
                    OleDbDataAdapter da = new OleDbDataAdapter(Cmd);//建立数据适配器
                    DataSet ds = new DataSet();//新建数据集
                    da.Fill(ds, "shyman");//把数据适配器中的数据读到数据集中的一个表中(此处表名为shyman,可以任取表名)
                    //指定datagridview1的数据源为数据集ds的第一张表(也就是shyman表),也可以写ds.Table["shyman"]

       dataGridView1.DataSource = ds.Tables[0];
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);//捕捉异常
                }
            }
        }

运行结果如下:

2.导出DataGridView中的数据到Excel的方法:

public void ToExcel(DataGridView dataGridView1)
        {
            try
            {
                //没有数据的话就不往下执行  
                if (dataGridView1.Rows.Count == 0)
                    return;
                //实例化一个Excel.Application对象  
                Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();

                //让后台执行设置为不可见,为true的话会看到打开一个Excel,然后数据在往里写  
                excel.Visible = true;

                //新增加一个工作簿,Workbook是直接保存,不会弹出保存对话框,加上Application会弹出保存对话框,值为false会报错  
                excel.Application.Workbooks.Add(true);
                //生成Excel中列头名称  
                for (int i = 0; i < dataGridView1.Columns.Count; i++)
                {
                    if (this.dataGridView1.Columns[i].Visible==true)
                    {
                        excel.Cells[1, i + 1] = dataGridView1.Columns[i].HeaderText;
                    }
                  
                }
                //把DataGridView当前页的数据保存在Excel中  
                for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
                {
                    System.Windows.Forms.Application.DoEvents();
                    for (int j = 0; j < dataGridView1.Columns.Count; j++)
                    {
                        if (this.dataGridView1.Columns[j].Visible==true)
                        {
                            if (dataGridView1[j, i].ValueType == typeof(string))
                            {
                                excel.Cells[i + 2, j + 1] = "'" + dataGridView1[j, i].Value.ToString();
                            }
                            else
                            {
                                excel.Cells[i + 2, j + 1] = dataGridView1[j, i].Value.ToString();
                            }
                        }
                       
                    }
                }

                //设置禁止弹出保存和覆盖的询问提示框  
                excel.DisplayAlerts = false;
                excel.AlertBeforeOverwriting = false;

                //保存工作簿  
                excel.Application.Workbooks.Add(true).Save();
                //保存excel文件  
                excel.Save("D:" + "\\KKHMD.xls");

                //确保Excel进程关闭  
                excel.Quit();
                excel = null;
                GC.Collect();//如果不使用这条语句会导致excel进程无法正常退出,使用后正常退出
                MessageBox.Show(this,"文件已经成功导出!","信息提示");

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "错误提示");
            }

        }

 

c#如何读取html格式的excel表格绑定到datatable中?求助大神!

...一种解决方法是用System.IO.File.ReadAllLines(FullName,Encoding.UTF8)读取为字符串数组,然后读取里面的字符串添加到dataTable中。有没有更好的方法?参考技术A读取Excel首先你在引用中得引用MicrosoftofficeExcel20**对应的dll文件,才能读取到Exc... 查看详情

c#解决读取excel混合文本类型,数据读取失败的解决方法

...-------------------------------------------------------------在导入Excel读取数据时,其中的一个字段保存的值有如下格式:"2011072014","20110Aad10","25124Adfa","例子asdfadf" 这样的混合了"字母/数字/中文"数据,在Excel表格中的前8条或前8+条数 查看详情

c#将datatable数据导出到excel表格中

     publicFileResultGetExcelFile()       {           if(Session["beginDate"]!=null)  查看详情

如何使用 C# 读取 Excel 文件的数据?

】如何使用C#读取Excel文件的数据?【英文标题】:HowtoreaddataofanExcelfileusingC#?【发布时间】:2009-03-1806:08:10【问题描述】:如何使用C#读取Excel文件?我打开一个Excel文件进行阅读并将其复制到剪贴板以搜索电子邮件格式,但我不... 查看详情

使用 C# 读取 Excel 工作表,其中表格已合并单元格

】使用C#读取Excel工作表,其中表格已合并单元格【英文标题】:ReadingExcelSheetUsingC#WheretheTablehasMergedCells【发布时间】:2012-06-1417:12:00【问题描述】:我正在尝试使用C#读取包含一些合并单元格的Excel工作表。我在另一篇文章中读... 查看详情

从 C# 读取 Excel 文件

】从C#读取Excel文件【英文标题】:ReadingExcelfilesfromC#【发布时间】:2010-09-0603:52:11【问题描述】:是否有免费或开源库可以直接从C#程序读取Excel文件(.xls)?不需要太花哨,只需选择一个工作表并将数据读取为字符串即可。到目... 查看详情

c#调用oledbconnection类读取excel表格时,报错外部组件发生异常!

...导,谢谢!没有多少就给10分吧!谢谢了参考技术A//动态读取Excel表数据到DataSetDataSet excelDataSet = new DataSet();using (OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=BOM.xlsx... 查看详情

用c#把word中的表格数据读取到xml文件

把word表格中的数据通过程序读取到XMl配置文件,表格数据庞大,分为子主表和子表,具体主表<XmlMapping>主表元素<XmlCollection>子表<XmlRow>子表元素</XmlRow></XmlCollection></XmlMapping>,希望大神能教教,我只会读... 查看详情

我无法在 c# 中使用 asp.net 从 Excel 文件中读取并存储到数据库中?

】我无法在c#中使用asp.net从Excel文件中读取并存储到数据库中?【英文标题】:IamnotabletoreadfromExcelfileandstoreintodatabaseusingasp.netinc#?【发布时间】:2012-11-1010:38:30【问题描述】:我这样做是为了阅读:privateboolwritetoven(stringxlspath)OleD... 查看详情

asp.net(c#)如何将查询到的数据导出excel表格?

...控件上.现在我想根据查询条件将查询到的数据导出到Excel表格中,每一步都要怎么做.能不能讲详细一点?采纳者追加100分!是用lable显示,不用其它控件显示你好,可以根据DataGrid将数据导出到excel的方法,原理都是一样的publicvoidExport... 查看详情

C# 无法从 Excel 电子表格中导入所有单元格

...遍历结果数据集时,似乎并非所有单元格都在那里。正在读取的Excel表有一些合并的单元格,我想知道这是否是问题所在。代码如下:privateDataS 查看详情

c#读取大数据量excel,60w行数据,该怎么处理

参考技术A不建议一次性读取,可以一行一行读取并处理 参考技术B使用openxml一行一行的读,不要一次性读到内存里面 参考技术C可以试着分页导出 查看详情

有没有办法像使用 C# 的 MS Office Excel 一样创建/读取 LibreOffice 电子表格?

】有没有办法像使用C#的MSOfficeExcel一样创建/读取LibreOffice电子表格?【英文标题】:Isthereawaytocreate/readaLibreOfficeSpreadsheetjustlikeMSOfficeExcelwithC#?【发布时间】:2011-07-1214:57:16【问题描述】:在一个创建excel文件的程序中,我想知道... 查看详情

c#怎么读取excel的数据

  方法一:采用OleDB读取EXCEL文件:把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下:   对于EXCEL中的表即sheet([sheet1$])如果不是固定的可以使用下面的方法得到参考技术A百度一下npoi 查看详情

c#程序,将数据从dataset导出到excel表格里的时间类型为啥显示成“#”号呢

...技术C把列拉开试试^_____^ 参考技术D因为没有拉开,你把表格拉大点看看本回答被提问者采纳 查看详情

用java怎么将excel表格数据导入到mysql数据库中

参考技术A现有poi读取到java里,然后通过java操作数据库把读取的内容插入到数据库里。 查看详情

excel导出插件

...10多个Excel表格或者更多来配置,一般会通过导出csv格式读取配置。本文提供导出Excel直接生成c#文件,对应数据直接生成结构体和数组,方便开发排错和简化重复写每个表格的读取配置方法。 导出效果     &nbs... 查看详情

c#用npoi读取excel数据到数据库中行的顺序乱怎么办?

privatevoidbutton4_Click(objectsender,EventArgse)stringfilepath=@"D:\temp1.xlsx";FileStreamfilestream=newFileStream(filepath,FileMode.OpenOrCreate,FileAccess.ReadWrite);//filestream.Position=0;XSSFWorkbookworkbook=newXSSFWorkbook(filestream);intsheetcount=workbook.Count;if(sheetcount&g... 查看详情