Я создаю простую программу, которая читает файл 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.