当前位置:   article > 正文

C# 使用OleDb导出Excel的注意事项_c# oledb

c# oledb

使用OleDb将数据导出Excel

 //导出按钮
  private void ImportBnt_Click(object sender, EventArgs e)
        {
            if (this.dgvFaultCodeView.Rows[0].Cells["Value"].Value == null)
            {
                MessageBox.Show(Properties.Resources.AlarmForm_NODataSave);
                return;
            }

            SaveFileDialog SaveOscData = new SaveFileDialog();
            SaveOscData.Filter = "Excel(*.xls)|*.xls";
            if (SaveOscData.ShowDialog() == DialogResult.OK)
            {
                bool Chinese = false;
                if (Utility.APP_LANG == Utility.CHINESE_LANG)
                {//中文
                    Chinese = true;
                }
              
                //获得oledb数据库连接
                String tempPath = SaveOscData.FileName;
                string tempCon = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + tempPath + ";Extended Properties=Excel 8.0";
                System.Data.OleDb.OleDbConnection tempoledecon = new System.Data.OleDb.OleDbConnection(tempCon);
                try
                {
                    if (File.Exists(tempPath))
                    {
                        File.Delete(tempPath);
                    }
                    tempoledecon.Open();  //打开连接
                    System.Data.OleDb.OleDbCommand tempOlecmd = new System.Data.OleDb.OleDbCommand();
                    tempOlecmd.Connection = tempoledecon;  //绑定OleDb命令与连接
                   
                    if (Chinese)
                    {
                        //创建表格 sheet, 名称是[错误代码],表头有 错误代码和说明两个字段,字段类型是VARCHAR
                        tempOlecmd.CommandText = "CREATE TABLE [错误代码] ([错误代码] VARCHAR,[说明] VARCHAR)";

                    }
                    else
                    {
                        tempOlecmd.CommandText = "CREATE TABLE [ErrorCode] ([ErrorCode] VARCHAR,[Description] VARCHAR)";

                    }
                    tempOlecmd.ExecuteNonQuery();
                    string ErrCode = this.dgvFaultCodeView.Rows[0].Cells["Value"].Value.ToString();
                    string ErrMsg = this.dgvFaultCodeView.Rows[0].Cells["Instruction"].Value.ToString();
                    if (Chinese)
                    {
                        //插入数据到【错误代码】sheet中,绑定表头字段对应的值
                        tempOlecmd.CommandText = "INSERT INTO[错误代码$](错误代码,说明) VALUES('" +
                    ErrCode + "','" + ErrMsg + "')";
                    }
                    else
                    {
                        tempOlecmd.CommandText = "INSERT INTO[ErrorCode$](ErrorCode,Description) VALUES('" +
                    ErrCode + "','" + ErrMsg + "')";
                    }
                
                    tempOlecmd.ExecuteNonQuery();

                    if (Chinese)
                    {
                        //创建表格,sheet
                        tempOlecmd.CommandText = "CREATE TABLE [故障信息] ([名称] VARCHAR,[值] VARCHAR,[单位] VARCHAR)";
                    }
                    else
                    {
                        //创建表格
                        tempOlecmd.CommandText = "CREATE TABLE [FaultInfo] ([Name] VARCHAR,[ValueData] VARCHAR,[Unit] VARCHAR)";
                    }
                   
                    tempOlecmd.ExecuteNonQuery();

                    if (Chinese)
                    {
                        for (int i = 0; i < this.dgvMessageView.Rows.Count; i++)
                        {
                            string name = this.dgvMessageView.Rows[i].Cells["MsgName"].Value.ToString();
                            string value = this.dgvMessageView.Rows[i].Cells["MsgValue"].Value.ToString();
                            string unit = this.dgvMessageView.Rows[i].Cells["MsgUnit"].Value.ToString();
                        //插入数据到【故障信息】sheet中,绑定表头字段对应的数据
                            tempOlecmd.CommandText = "INSERT INTO[故障信息$](名称,值,单位) VALUES('" +
                                name + "','" + value + "','" + unit + "')";
                            tempOlecmd.ExecuteNonQuery();
                        }
                    }
                    else
                    {
                        for (int i = 0; i < this.dgvMessageView.Rows.Count; i++)
                        {
                            string name = this.dgvMessageView.Rows[i].Cells["MsgName"].Value.ToString();
                            string value = this.dgvMessageView.Rows[i].Cells["MsgValue"].Value.ToString();
                            string unit = this.dgvMessageView.Rows[i].Cells["MsgUnit"].Value.ToString();

                            tempOlecmd.CommandText = "INSERT INTO[FaultInfo$](Name,ValueData,Unit) VALUES('" +
                                name + "','" + value + "','" + unit + "')";
                            tempOlecmd.ExecuteNonQuery();
                        }
                    }
                   

                    tempoledecon.Close();
                }
                catch (Exception ex)
                {
                    tempoledecon.Close();
                    MessageBox.Show(Properties.Resources.AlarmForm_FailSave);
                }
            }
        }



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114

效果图

在这里插入图片描述
创建了两个Sheet,每个sheet中有自己的数据。

导出Excel时的注意事项

注:该Demo中 的工程使用的是.net Frame 4.0
1)创建sheet的名称不能太长,如果是英文两个单词之间不能使用空格隔开。(比如使用 Error Message(有空格) 或 ErrorMessages(名称太长)都会出错)

2)创建的sheet和表头名称,和后面要插入数据的sheet和表头字段需要一一对应上。(注创建字段的名称不能叫Value, PS:我前面使用了一直报错,无奈之下将Value更改为ValueData才成功)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/617330
推荐阅读
相关标签
  

闽ICP备14008679号