(21/10/2008 05:47)
Merhabalar;
DataGridView da excel sayfasını göstermesini istiyorum.
Şöyle bir kod yazdım;
OleDbConnection c;
c.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\deneme.xls;Extended Properties=Excel 8.0";
Tabi daha devamı var:)
Burda c.connectionString satırındaki c nin altını çiziyor ve hata veriyor
Bunu nasıl düzeltebilirim?
Yardımcı olursanız sevinirim :)
CODE:
private void ExcelOkur()
{
dataGridView1.ColumnCount = 5;
dataGridView1.ColumnHeadersVisible = true;
dataGridView1.Columns[0].Name = "Bölüm";
dataGridView1.Columns[1].Name = "Açıklama";
dataGridView1.Columns[2].Name = "Tutar";
dataGridView1.Columns[3].Name = "?";
dataGridView1.Columns[4].Name = "Hesap";
Excel.Workbook theWorkbook =
ExcelNesnesi.Workbooks.Open(
openFileDialog1.FileName,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing);
Excel.Sheets sheets = theWorkbook.Worksheets;
Excel.Worksheet worksheet = (Excel.Worksheet)sheets.get_Item(1);
for (int i = 19; i <= 47; i++)
{
Excel.Range range = worksheet.get_Range("B" + i.ToString(), "F" + i.ToString());
System.Array myvalues = (System.Array)range.Cells.Value2;
string[] strArray = ConvertToStringArray(myvalues);
if (strArray[4].ToString() != "")
{
dataGridView1.Rows.Add(strArray);
}
}
for (int j = 18; j <= 47; j++)
{
Excel.Range range = worksheet.get_Range("H" + j.ToString(), "L" + j.ToString());
System.Array myvalues = (System.Array)range.Cells.Value2;
string[] strArray = ConvertToStringArray(myvalues);
if (strArray[4].ToString() != "")
{
dataGridView1.Rows.Add(strArray);
}
}
theWorkbook.Close(false, null, null);
//ExcelNesnesi.Workbooks.Close();
button4.Enabled = true;
}
string[] ConvertToStringArray(System.Array values)
{
string[] theArray = new string[values.Length];
for (int i = 1; i <= values.Length; i++)
{
if (values.GetValue(1, i) == null)
theArray[i - 1] = "";
else
theArray[i - 1] = (string)values.GetValue(1, i).ToString();
}
return theArray;
}
Vermiş olduğunuz kod için teşekkür ederim .
Anladığım kadarıyla o kodda yeni bir excel oluşturuyosunuz.
Benim istediğim ise önceden oluşturulmuş bir excel dosyasına devamlı kaydetmesi :(
Yardımlarınız için tşk...
Ancak siz ilk önce gridview da sayfayı göstermekten bahsetmişsiniz.Tam olarak istediğiniz varolan bir excel dosyasına kayıt yaptırmakmı yani grid den excele aktarmamı?
Bu arada gridler vs derken açtığın diğer konuyada baktım.Yapmak istedeğin şeyi söyle istersen genel olarak yardımcı olalım hem sen kısa kısa soru sormamış olursun hemde tek seferde yardımcı oluruz daha iyi olur.
Şöyle sölim ;
Formumda datagrid , textbox ve buton var.
Form açıldığında önceden oluşturulan bir excel dosyasını datagrid de gösterecek ve textbox a veri girilip butona basıldığında aynı excele kaydedecek.Ve ben bu kayıt edeilen veriyi hem formumda görebileceğim hemde excel dosyasını açtığımda oraya kayıt olmuş olarak görmek istiyorum.
İstediğim gibi kod buldum.Kodlar şu şekilde;
Formun load özelliğine;
Dim c As New OleDb.OleDbConnection
c.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:deneme.xls;Extended Properties=Excel 8.0"
Dim cmd As New OleDbCommand("Select * from giriss", c)
Dim adp As New OleDbDataAdapter(cmd)
Dim ds As New DataSet
adp.Fill(ds, "giriss")
DataGrid1.DataSource = ds.Tables("giriss")
Butonun click özelliğine de;
Dim c As New OleDb.OleDbConnection
c.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:deneme.xls;Extended Properties=Excel 8.0"
Dim cmd As New OleDbCommand("insert into giriss(Artikel Kodu,Malzeme Adı,Giriş Tarihi,Giriş Adedi,Giriş Yeri),values('" + ComboBox1.Text + "','" + TextBox1.Text + "','" + DateTimePicker1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + "')", c)
Dim adp As New OleDbDataAdapter(cmd)
Dim ds As New DataSet
adp.Fill(ds, "giriss")
cmd.ExecuteNonQuery()
DataGrid1.DataSource = ds.Tables("giriss")
Kodalrı var.
Ama;
adp.Fill(ds,giriss)
Kodunda hata veriyor.
Hata : Belitrilen adres yolu bulunamadı.
Diyor.Adres yolunu doğru yazabilirsem sorun ortadan kalkacak gibi...
Eee hata belli olduğuna göre neden uğraşıyorsun adres yoluna yoğunlaşsan daha iyi olmazmı?bir kaç sitedede açtığın konularına rastladım aynı başlıkta bence sorunu iyi analiz etmen gerekirki kendinde diyorsun adres yolu diye sorun bu ikisinde ds,giriss uyuşmayan birşeyler var sanırım nasıl bir işleme tabii tutuyorsun bilemiyorum artık..
