把excel导入dgv之后,希望被导入的值可以转换(dgv中)
我现在碰到的问题是
如果 (导入值列为整型)
{
   这里我无法输入非整型的
}目的:为了增加让输出值的时候,不用加引号
dgv中
123 被导出的时候不加引号
abc 被导出的时候加引号
12-12-2007 被导出的时候 加引号----------------------------
以上被导出的值,保存在txt中,以方便以后导入sql server 2000--------------------------------------------------
或是在列的开头有选择类型的也可以,我本来想在原来的值中,加入引,但是没有成功(类型问题)我试着在excel中,加入引号,发现,数字列不能导入,
或是在绑定dgv前,格式化这些值,都变成string?

解决方案 »

  1.   

    k = (int)dataGridView1[index[j], i].Value;
    用try catch来处理.
      

  2.   

    不好意思, 这个我不知道如何下手,我设了一个按钮,我现在是想把选中的框的值转换,        private void button1_Click(object sender, EventArgs e)
            {
                try
                {
                    foreach (DataGridViewCell cell in this.dataGridView1.SelectedCells)
                    {
                        if (cell.Value != null)
                            cell.Value = "";                }
                
                }
                catch {                foreach (DataGridViewCell cell in this.dataGridView1.SelectedCells)
                    {
                        if (cell.Value != null)
                            cell.Value = 0;                }            
                }           
            }
    这个是异常
      

  3.   


                    foreach (DataGridViewCell cell in this.dataGridView1.SelectedCells)
                    {
                        if (cell.Value != null)
                        {
                            try
                            {
                                this.Text = ((double)cell.Value).ToString();//
                            }
                            catch
                            {
                                this.Text = "abc";//变成你想要的.
                            }
                        }                }
                
      

  4.   

    text可以显示其修改了,我用ValueType得到的类型还是没有改,输出的值也还是一样
      if (j + 1 < dataGridView1.ColumnCount)
                            {
                                myfile += dataGridView1[index[j], i].Value == null ? "null\t," : "" + dataGridView1[index[j], i].ValueType.Name + dataGridView1[index[j], i].Value.ToString() + ",";
                            }
                            else
                            {                            myfile += dataGridView1[index[j], i].Value == null ? "null\t" : "" +dataGridView1[index[j], i].ValueType.Name+ dataGridView1[index[j], i].Value.ToString() + "";
                            }
      

  5.   

    你在导入到DGV的时候是怎么导入的是DGV指定Table还是循环?
    你用 
     if ((this.textBox1.Text != "EXCEL文件") && (this.comboBox1.Text != "工作蒲"))
                {
                    string strSource = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + this.textBox1.Text + "; Extended Properties =Excel 8.0";
                    OleDbConnection conn = new OleDbConnection(strSource);
                    string sqlstring = "SELECT * FROM [" + this.comboBox1.Text + "]";
                    OleDbDataAdapter adapter = new OleDbDataAdapter(sqlstring, conn);
                    DataSet da = new DataSet();
                    adapter.Fill(da);
                    //MessageBox.Show(da.Tables[0].Columns[0].DataType.ToString());
                    //this.dataGridView1.DataSource = da.Tables[0];
                    for (int i = 0; i < da.Tables[0].Rows.Count; i++)
                    {
                        for (int k = 0; k < da.Tables[0].Columns.Count; k++)
                        {
                             switch (da.Tables[0].Rows[i][k].GetType().Name)
                        {
                            case "String":
                                ......
                                break;
                            case "Double":
                                ......
                               break ;
                            default:
                                break;
                        }
                            
                        }                   
                    }
                    conn.Close();
                    conn.Dispose();
                    adapter.Dispose();
                    da.Dispose();
                }
    如果是知道那么也可以先判断类型
      

  6.   


     string source = "D:\\book1.xls";//execel文件的完整路径
                string sqlconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + source + ";Extended Properties=Excel 8.0";
                string sql = "SELECT * FROM [Sheet1$]  ";
                OleDbCommand oldcom = new OleDbCommand(sql, new OleDbConnection(sqlconn));
                OleDbDataAdapter oleda = new OleDbDataAdapter(oldcom);
                DataSet ds = new DataSet();
                oleda.Fill(ds, "[Sheet1$]"); 
    this.dataGridView1.DataSource = ds;
                this.dataGridView1.DataMember = "[Sheet1$]";
      

  7.   

    当绑定DataGridView后,系统会根据绑定的数据源为每一列设置类型。所以可行的方法是,绑定前,改变数据源的数据类型。请参考下面的代码:
    string source = "D:\\book1.xls";//execel文件的完整路径
                string sqlconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + source + ";Extended Properties=Excel 8.0";
                string sql = "SELECT * FROM [Sheet1$]  ";
                OleDbCommand oldcom = new OleDbCommand(sql, new OleDbConnection(sqlconn));
                OleDbDataAdapter oleda = new OleDbDataAdapter(oldcom);
                DataSet ds = new DataSet();
                oleda.Fill(ds, "[Sheet1$]"); 
    //克隆一个新的DataTable
                DataTable dt = ds.Tables[0].Clone();            //设置DataTable的每一列的数据类型均为string
                foreach (DataColumn c in dt.Columns)
                {
                    c.DataType = typeof(string);
                }            //把值添加到新的DataTable
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    DataRow row = dt.NewRow();
                    for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
                    {
                        row[j] = ds.Tables[0].Rows[i][j].ToString();
                    }                dt.Rows.Add(row);
                }//绑定新的DataTable
    this.dataGridView1.DataSource = dt;
      

  8.   

    你可以对每一个Cell的值判断它的数据类型 
     switch(dataGridView1.Rows[0].Cells[0].Value.GetType().ToString())
      {
         case "System.String":
         case "System.Datetime":
         {
            //字符的处理方法
             break;
         }
         default:
         {
            //数字的处理方法
             break;
         }
      }
      

  9.   


    但是如果cell值的类型是double的话,那么他还是不会变的
    字符进去会出错!