none
Como Guardar Cambio en DataGridview en memoria RRS feed

  • Pregunta

  • Hola, tengo  un poblema con el codigo, les comento que hace:

    Cargo un Excel a un datagridview, Cambio el formato de numeros en 3 Tablas, luego genero un archivo txt con los datos, pero no me guarda los cambios realizados.

    Les adjunto el Codigo y el archivo Excel.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    using System.Data.SqlClient;
    using System.Windows.Documents;
    using System.Windows.Controls;
    using ADOX;
    namespace Import
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            private void Form1_Load(object sender, EventArgs e)
            {
            }
            public static string SelectedTable = string.Empty;
            private void btBuscar_Click(object sender, EventArgs e)
            {
                OpenFileDialog fdlg = new OpenFileDialog();
                fdlg.Title = "Select file";
                fdlg.InitialDirectory = @"d:\";
                fdlg.FileName = txtFileName.Text;
                fdlg.Filter = "Excel Sheet(*.xls)|*.xls|All Files(*.*)|*.*";
                fdlg.FilterIndex = 1;
                fdlg.RestoreDirectory = true;
                if (fdlg.ShowDialog() == DialogResult.OK)
                {
                    txtFileName.Text = fdlg.FileName;
                    Import();
                    Application.DoEvents();
                }
            }
            private void Import()
            {
                if (txtFileName.Text.Trim() != string.Empty)
                {
                    try
                    {
                        string[] strTables = GetTableExcel(txtFileName.Text);
                        frmSelectTables objSelectTable = new frmSelectTables(strTables);
                        objSelectTable.ShowDialog(this);
                        objSelectTable.Dispose();
                        if ((SelectedTable != string.Empty) && (SelectedTable != null))
                        {
                            DataTable dt = GetDataTableExcel(txtFileName.Text, SelectedTable);
                            dataGridView1.DataSource = dt.DefaultView;
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message.ToString());
                    }
                }
            }
            public static DataTable GetDataTableExcel(string strFileName, string Table)
            {
                System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source = " + strFileName + "; Extended Properties = \"Excel 8.0;HDR=Yes;IMEX=1\";");
                conn.Open();
                string strQuery = "SELECT * FROM [" + Table + "]";
                System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(strQuery, conn);
                System.Data.DataSet ds = new System.Data.DataSet();
                adapter.Fill(ds);
                return ds.Tables[0];
            }
            public static string[] GetTableExcel(string strFileName)
            {
                string[] strTables = new string[100];
                Catalog oCatlog = new Catalog();
                ADOX.Table oTable = new ADOX.Table();
                ADODB.Connection oConn = new ADODB.Connection();
                oConn.Open("Provider=Microsoft.Jet.OleDb.4.0; Data Source = " + strFileName + "; Extended Properties = \"Excel 8.0;HDR=Yes;IMEX=1\";", "", "", 0);
                oCatlog.ActiveConnection = oConn;
                if (oCatlog.Tables.Count > 0)
                {
                    int item = 0;
                    foreach (ADOX.Table tab in oCatlog.Tables)
                    {
                        if (tab.Type == "TABLE")
                        {
                            strTables[item] = tab.Name;
                            item++;
                        }
                    }
                }
                return strTables;
            }
            public void btCorregir_Click(object sender, EventArgs e)
            {
                // Cambiar formato de   192.80  a  000192.80
                dataGridView1.Columns[6].DefaultCellStyle.Format = "000000.00";
                dataGridView1.Columns[7].DefaultCellStyle.Format = "000000.00";
                dataGridView1.Columns[13].DefaultCellStyle.Format = "000000.00";
            }
            private void btGuardar_Click(object sender, EventArgs e)
            {
                // Ubicacion de TXT a Crear
                TextWriter sw = new StreamWriter(@"D:\test.txt");
                int rowcount = dataGridView1.Rows.Count;
                for (int i = 0; i < rowcount - 1; i++)
                {
                    //imprime el TXT en el orden de columnas que elijo
                    sw.WriteLine(dataGridView1.Rows[i].Cells[0].Value.ToString()
                      + "\t" + dataGridView1.Rows[i].Cells[1].Value.ToString()
                      + "\t" + dataGridView1.Rows[i].Cells[2].Value.ToString()
                      + "\t" + dataGridView1.Rows[i].Cells[3].Value.ToString()
                      + "\t" + dataGridView1.Rows[i].Cells[5].Value.ToString()
                      + "\t" + dataGridView1.Rows[i].Cells[5].Value.ToString()
                      + "\t" + dataGridView1.Rows[i].Cells[6].Value.ToString()
                      + "\t" + dataGridView1.Rows[i].Cells[7].Value.ToString()
                      + "\t" + dataGridView1.Rows[i].Cells[8].Value.ToString()
                      + "\t" + dataGridView1.Rows[i].Cells[9].Value.ToString()
                      + "\t" + dataGridView1.Rows[i].Cells[10].Value.ToString()
                      + "\t" + dataGridView1.Rows[i].Cells[11].Value.ToString()
                      + "\t" + dataGridView1.Rows[i].Cells[12].Value.ToString()
                      + "\t" + dataGridView1.Rows[i].Cells[13].Value.ToString()
                      + "\t" + dataGridView1.Rows[i].Cells[14].Value.ToString()
                      + "\t" + dataGridView1.Rows[i].Cells[15].Value.ToString()
                      + "\t" + dataGridView1.Rows[i].Cells[16].Value.ToString()
                      + "\t" + dataGridView1.Rows[i].Cells[17].Value.ToString()
                      + "\t" + dataGridView1.Rows[i].Cells[18].Value.ToString()
                      + "\t" + dataGridView1.Rows[i].Cells[19].Value.ToString()
                      + "\t" + dataGridView1.Rows[i].Cells[4].Value.ToString());
                }
                sw.Close();
                MessageBox.Show("Archivo Creado ", " Aviso", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }    
        }
    }

    Proyecto en VS2010
    • Editado SerSD miércoles, 7 de noviembre de 2012 18:05
    miércoles, 7 de noviembre de 2012 17:43

Todas las respuestas

  • Debes insertar los datos en la tabla y luego recuperar la informacion en el datagridview

    Si mi respuesta te ha ayudado a resolver tus problemas, Selecciona "Proponer como respuesta"

    Blog
    J.Joaquin

    miércoles, 7 de noviembre de 2012 17:45
  • Hola, Gracias por tu respuesta casi instantanea, pero como le doy formato espesifico ("000000,00") a una columna en el datatable, antes de cargarlo en el datagridview.

    Gracias.


    Siempre que algo que aprender.

    miércoles, 7 de noviembre de 2012 17:58