DataGridview导出excel

这个方法需要使用的机器安装有microsoft office软件,

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using System.Data.SqlClient;
using Microsoft.Internal.Performance;
using Microsoft.CSharp;

namespace WareHouse
{
    class ExitToExcel
    {
        public void exitToExcel(DataGridView DGV, string fileName)  //传入DGV与要导出的文件名作为参数
        {
            if (DGV.Rows.Count > 0)
            {

                string saveFileName = fileName;
                SaveFileDialog saveDialog = new SaveFileDialog();
                saveDialog.DefaultExt = "xls";
                saveDialog.Filter = "Excel文件|*.xls";
                saveDialog.FileName = saveFileName;
                saveDialog.ShowDialog();
                saveFileName = saveDialog.FileName;
                if (saveFileName.IndexOf(":") < 0) return; //被点了取消 
                Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
                if (xlApp == null)
                {
                    MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel");
                    return;
                }

                Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
                Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
                Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1                                                                                                                    //写入标题
                for (int i = 0; i < DGV.ColumnCount; i++)
                {
                    worksheet.Cells[1, i + 1] = DGV.Columns[i].HeaderText;
                }
                //写入数值
                for (int r = 0; r < DGV.Rows.Count; r++)
                {
                    try
                    {
                        for (int i = 0; i < DGV.ColumnCount; i++)
                        {

                            worksheet.Cells[r + 2, i + 1] = Convert.ToString(DGV.Rows[r].Cells[i].Value.ToString());

                        }
                        System.Windows.Forms.Application.DoEvents();

                    }

                    catch
                    { }
                }
                worksheet.Columns.EntireColumn.AutoFit();//列宽自适应

                if (saveFileName != "")
                {
                    try
                    {
                        workbook.Saved = true;
                        workbook.SaveCopyAs(saveFileName);
                      
                    }
                    catch (Exception ex)
                    {

                        MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + ex.Message);
                    }

                }

                xlApp.Quit();
                GC.Collect();
                System.Diagnostics.Process.Start(saveFileName); //打开EXCEL
                MessageBox.Show("资料保存成功", "提示", MessageBoxButtons.OK);
            }
            else
            {
                MessageBox.Show("报表为空,无表格需要导出", "提示", MessageBoxButtons.OK);
            }
        }
    }
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴回答您的问题。以下是使用 element-plus 组件在 Vue 页面上编写登录注册页面的示例代码: <template> <div class="login-register"> <el-form :model="form" ref="form" :rules="rules" label-width="80px"> <el-form-item label="用户名" prop="username"> <el-input v-model="form.username"></el-input> </el-form-item> <el-form-item label="密码" prop="password"> <el-input type="password" v-model="form.password"></el-input> </el-form-item> <el-form-item label="确认密码" prop="confirmPassword"> <el-input type="password" v-model="form.confirmPassword"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm('form')">注册</el-button> <el-button @click="resetForm('form')">重置</el-button> </el-form-item> </el-form> </div> </template> <script> import { ref } from 'vue'; import { ElForm, ElFormItem, ElInput, ElButton } from 'element-plus'; export default { components: { ElForm, ElFormItem, ElInput, ElButton, }, setup() { const form = ref({ username: '', password: '', confirmPassword: '', }); const rules = ref({ username: [ { required: true, message: '请输入用户名', trigger: 'blur' }, { min: 3, max: 20, message: '用户名长度在 3 到 20 个字符之间', trigger: 'blur' }, ], password: [ { required: true, message: '请输入密码', trigger: 'blur' }, { min: 6, max: 20, message: '密码长度在 6 到 20 个字符之间', trigger: 'blur' }, ], confirmPassword: [ { required: true, message: '请确认密码', trigger: 'blur' }, { validator: (rule, value, callback) => { if (value !== form.value.password) { callback(new Error('两次输入的密码不一致')); } else { callback(); } }, trigger: 'blur', }, ], }); const submitForm = (formName) => { const form = this.$refs[formName]; form.validate((valid) => { if (valid) { console.log('提交成功'); } else { console.log('提交失败'); return false; } }); }; const resetForm = (formName) => { const form = this.$refs[formName]; form.resetFields(); }; return { form, rules, submitForm, resetForm, }; }, }; </script> <style scoped> .login-register { max-width: 400px; margin: auto; padding: 20px; } </style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值