qq_25908751 2015-05-21 08:39 采纳率: 0%
浏览 1697

C# dataGridView数据导到Excel里面 标题是英文了,怎么改成中文的?

private void SaveFileDialog()
    {
        //string localFilePath, fileNameExt, newFileName, FilePath;
        SaveFileDialog saveFileDialog1 = new SaveFileDialog();
        //设置文件类型
        saveFileDialog1.Filter = " excel files(*.xls)|*.xls";
        //设置默认文件类型显示顺序
        saveFileDialog1.FilterIndex = 2;
        //保存对话框是否记忆上次打开的目录
        saveFileDialog1.RestoreDirectory = true;
        //点了保存按钮进入
        if (saveFileDialog1.ShowDialog() == DialogResult.OK)
        {
            DataTable dt = (DataTable)this.dataGridView1.DataSource;
            TableToExcel(saveFileDialog1.FileName, dt, "haiyan");
        }
    }
    static public void TableToExcel(string excel, DataTable tb, string tbname)
    {
        try
        {
            OleDbConnection connex = GetConnFromExcel(excel); //获取到excel文件的oledb连接
            string ct = "CREATE TABLE " + tbname + " (";                //以下生成一个sql命令向excel中插入一个表
            foreach (DataColumn clmn in tb.Columns)
            {
                switch (clmn.DataType.Name)                                     //根据不同数据类型分别处理
                {
                    case "Decimal":
                        ct += clmn.ColumnName + " Decimal,";
                        break;
                    case "Double":
                        ct += clmn.ColumnName + " Double,";
                        break;
                    default:
                        ct += clmn.ColumnName + " string,";

                        break;
                }
            }
            ct = ct.Substring(0, ct.Length - 1) + ")";

            OleDbCommand cmd1 = new OleDbCommand(ct, connex);
            cmd1.ExecuteNonQuery();                                                              //向excel中插入一个表

            foreach (DataRow r in tb.Rows)                                                       //下面向excel中一行一行写入数据
            {
                string fs = "", vs = "";
                foreach (DataColumn clmn in tb.Columns)
                {
                    fs += clmn.ColumnName + ",";
                    if (r[clmn.ColumnName] == DBNull.Value)
                    {
                        vs += "null,";
                        continue;
                    }
                    switch (clmn.DataType.Name)                                                   //根据不同数据类型分别处理
                    {
                        case "Decimal":
                            vs += ((decimal)r[clmn.ColumnName]).ToString("0.00") + ",";
                            break;
                        case "Double":
                            vs += ((double)r[clmn.ColumnName]).ToString("0.00") + ",";
                            break;
                        case "DateTime":
                            vs += "'" + ((DateTime)r[clmn.ColumnName]).ToShortDateString() + "',";
                            break;
                        default:
                            vs += "'" + r[clmn.ColumnName].ToString() + "',";
                            break;
                    }

                }
                string sqlstr = "insert into [" + tbname + "$] (" + fs.Substring(0, fs.Length - 1) + ") values (" + vs.Substring(0, vs.Length - 1) + ")";
                OleDbCommand cmd = new OleDbCommand(sqlstr, connex);
                cmd.ExecuteNonQuery();                                            //向excel中插入数据
            }
            connex.Close();
        }
        catch (Exception e)
        {
            throw new Exception(e.Message);
        }
    }

    static public OleDbConnection GetConnFromExcel(string ExcelFileName)
    {
        try
        {
            OleDbConnection connEX = new OleDbConnection();
            connEX.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExcelFileName + ";Extended Properties=Excel 8.0";
            //connEX.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExcelFileName + ";Extended Properties=""Excel 8.0;IMEX=1;""";
            connEX.Open();
            return connEX;
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
            return null;
        }
    }![![图片说明](https://img-ask.csdn.net/upload/201505/21/1432197521_401467.png)图片说明](https://img-ask.csdn.net/upload/201505/21/1432197510_409063.png)
  • 写回答

3条回答 默认 最新

  • threenewbee 2015-05-21 08:42
    关注

    fs += clmn.ColumnName + ",";
    ->
    fs += clmn.Text + ",";
    看看

    评论

报告相同问题?

悬赏问题

  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝