管理开发系统八:winform导出excel

本文介绍了在Winform应用中导出Excel的三种方法:数据流方式(速度较快但宽度适配问题)、Excel表方式(需要安装Office,存在兼容性问题)以及直接从数据库导出。详细讨论了每种方法的优缺点,并分享了解决Office与WPS冲突的经验。此外,还提供了系列文章链接,帮助读者深入学习Winform与数据库的交互。
摘要由CSDN通过智能技术生成

我这里说3种方法  一种数据流 有点速度比较快,缺点列表宽度不适配 日期长的直接显示##### 拉宽了才会显示正常。

//1导出 excel 数据流方式
        public static void ExcelBtnLiu(DataGridView dgvUseName, string name)
        {
            if (dgvUseName.Rows.Count == 0)
            {
                MessageBox.Show("请您检查是否有数据导出", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            //提示用户保存文件位置
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.Filter = "Excel files (*.xls)|*.xls";
            saveFileDialog.FilterIndex = 0;
            saveFileDialog.RestoreDirectory = true;
            saveFileDialog.CreatePrompt = true;
            saveFileDialog.Title = "导出Excel文件到";
            saveFileDialog.FileName = name;
            DialogResult result = saveFileDialog.ShowDialog();
            if (result == DialogResult.Cancel) return;//点击取消
            //打开文件流 开始写入
            Stream myStream = saveFileDialog.OpenFile();
            StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));
            string str = "";
            try
            {
                //写标题     
                for (int i = 0; i < dgvUseName.ColumnCount; i++)
                {
                    if (i > 0)
                    {
                        str += "\t";
                    }
                    str += dgvUseName.Columns[i].HeaderText;
                }
                sw.WriteLine(str);
                //写内容   
                for (int j = 0; j < dgvUseName.Rows.Count; j++)
                {
                    string tempStr = "";
                    for (int k = 0; k < dgvUseName.Columns.Count; k++)
                    {
                        if (k > 0)
                        {
                            tempStr += "\t";
                        }
                        if (dgvUseName.Rows[j].Cells[k].Value != null)
                        {
                            tempStr += dgvUseName.Rows[j].Cells[k].Value.ToString();
                        }
                        tempStr += "";
                    }
                    sw.WriteLine(tempStr);
                }
                MessageBox.Show("成功导出Excel表", "导出提示");
                sw.Close();
                myStream.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                sw.Close();
                myStream.Close();
            }
        }

 第二种  excel表的方式 这里需要引用excel 而且你的电脑上要安装office  这里说一下特别搞笑 我电脑有wps 没有安装office 所以 引用using Excel = Microsoft.Office.Interop.Excel; 就出错,然后我安装了office。 结果无论用哪个打开excel都特别慢,既然不用wps那我就卸载了,结果项目打不出来excel了,Office注册表出问题,com组件调用Queryinterface因以下错误而失败:库没有注册,我又重新装回了wps,然后没问题了打开也快了。

 //DataGridView 导出excel
        public static void print(DataGridView dataGridView1,string name)
        {
            if (dataGridView1.Rows.Count == 0)
            {
                MessageBox.Show("请您检查是否有数据导出", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            //导出到execl   
            try
            {
                SaveFileDialog saveFileDialog = new SaveFileDialog();
                saveFileDialog.Filter = "Excel files (*.xls)|*.xls";
                saveFileDialog.FilterIndex = 0;
                saveFileDialog.RestoreDirectory = true;
          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值