Записать новое значение в файл xls с помощью Oledb в C # - PullRequest
0 голосов
/ 26 февраля 2019

Я создаю простую программу, которая читает файл XLS, в котором больше листов с одним столбцом, и я хочу скопировать первый столбец всех листов на первом листе, чтобы первый столбец второго листа вставить ввторой столбец первого листа и т. д. и т. д.

Так вот код:

private void Button_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                var FD = new System.Windows.Forms.OpenFileDialog();
                DialogResult dr = FD.ShowDialog();
                if (dr == System.Windows.Forms.DialogResult.OK)
                {
                    string fileToOpen = FD.FileName;

                    string szConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source = '" + fileToOpen + 
                       "';Extended Properties=\"Excel 8.0;HDR=NO;\"";


                    List<string> listaFogli = ToExcelsSheetList(fileToOpen);
                    String nomeSheet1 = listaFogli[0];
                    listaFogli.Remove(nomeSheet1);

                    //CODICE DI PROVA
                    OleDbConnection oleDbConnection = new System.Data.OleDb.OleDbConnection(szConnectionString);
                    oleDbConnection.Open();
                    OleDbCommand oledbCmd = new OleDbCommand();
                    oledbCmd.Connection = oleDbConnection;

                    oledbCmd.CommandText = "SELECT * FROM [" + nomeSheet1 + "$]";
                    DataTable dtDataTable = new DataTable();
                    using (OleDbDataAdapter oledbAdapter = new OleDbDataAdapter(oledbCmd))
                        oledbAdapter.Fill(dtDataTable);

                    int nColonna = 2;

                    foreach(string nomeSheet in listaFogli)
                    {
                        int stRowNumber = 1;
                        List<string> newRows = ReadRowBySheet(fileToOpen, nomeSheet);

                        foreach(string nuovoValore in newRows)
                        {
                            String text  = nuovoValore.Replace("'", "");
                            //string stRowNumber = (dtDataTable.Rows.Count + 1).ToString();
                            string stRowID = "" + stRowNumber + ":" + nColonna+"";
                            oledbCmd.CommandText = "UPDATE [" + nomeSheet1 + "$" + stRowID + "] SET F"+nColonna+"='"+ text + "'";
                            oledbCmd.ExecuteNonQuery();

                            stRowNumber++;
                        }



                        nColonna++;

                    }


                    oleDbConnection.Close();
                    oleDbConnection.Dispose();



                }


            }
            catch (Exception exc)
            {
                Console.WriteLine("pippo");
            }
        }

Если я попытаюсь запустить это приложение, столбец второго листа будет правильно вставлен во второйстолбец первого листа, но когда я пытаюсь вставить столбец третьего листа в третий столбец первого листа, у меня появляется эта ошибка:

No value specified for some necessary parameters.
...