Merhaba bir sorunum Form sayfası ekranında bir combobox var burada stok grupları yer alıyor benim amacım mesela Yiyecek ve İçecek Grubunu seçip o gruba ait ürünleri listelemek verileri excelden çektireceğim çok uğraştım ama olmadı şu an hiç hata vermiyor ama verileride getirmiyor kodları paylaşıyorum..
StokListeOku.cshtml
`@{
ViewBag.Title = "Stok Listesi";
var stokListesi = ViewBag.StokListesi as List<stokambarmuhasebe.Models.StokModel>;
}
<h2>Stok Listesi</h2>
<!-- ComboBox -->
<form method="get" action="@Url.Action("StokListeOku", "Stok")">
<label for="grupKodu">Grup Seç:</label>
<select name="grupKodu" id="grupKodu" onchange="this.form.submit()">
<option value="">Tüm Gruplar</option>
<option value="grup1" @(ViewBag.SecilenGrup == "grup1" ? "selected" : "")>01 YİYECEK İÇECEK GRUBU</option>
<option value="grup2" @(ViewBag.SecilenGrup == "grup2" ? "selected" : "")>02 TESİSAT MALZEMELERİ GRUBU</option>
<option value="grup3" @(ViewBag.SecilenGrup == "grup3" ? "selected" : "")>03 MOBİLYA MALZEMESİ GRUBU</option>
<!-- Diğer gruplar buraya eklenebilir -->
</select>
</form>
<!-- Filtrelenmiş Stok Listesi -->
@if (stokListesi != null && stokListesi.Any())
{
<table>
<thead>
<tr>
<th>Stok Adı</th>
<th>Grup Adı</th>
</tr>
</thead>
<tbody>
@foreach (var stok in stokListesi)
{
<tr>
<td>@stok.StokAdi</td>
<td>@stok.GrupAdi</td>
</tr>
}
</tbody>
</table>
}
else
{
<p>Seçili gruba ait stok bulunamadı.</p>
}
<!-- Hata mesajı -->
@if (ViewBag.ErrorMessage != null)
{
<p style="color: red;">@ViewBag.ErrorMessage</p>
}
`
Stok Controller
`using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.IO;
using OfficeOpenXml; // EPPlus kütüphanesi
namespace stokambarmuhasebe.Controllers
{
public class StokController : Controller
{
public ActionResult StokListeOku(string grupKodu)
{
// Excel dosyasının yolunu belirtin (App_Data'da olması önerilir)
var filePath = Server.MapPath("~/App_Data/StokListe.xlsx");
var stokListesi = ReadExcelData(filePath);
// Eğer grupKodu varsa, veriyi filtreleyelim
if (!string.IsNullOrEmpty(grupKodu))
{
stokListesi = stokListesi.Where(s => s.GrupAdi.Contains(grupKodu)).ToList();
}
// ViewBag ile stokları View'a gönderiyoruz
ViewBag.StokListesi = stokListesi;
ViewBag.SecilenGrup = grupKodu; // Seçilen grubu view'da kullanabilmek için
return View();
}
// Excel'den veri okuma işlemi
private List<StokModel> ReadExcelData(string filePath)
{
var stokListesi = new List<StokModel>();
try
{
using (var package = new ExcelPackage(new FileInfo(filePath)))
{
var worksheet = package.Workbook.Worksheets[0]; // İlk sayfa
var rowCount = worksheet.Dimension.End.Row;
// Excel'den veriyi okuma
for (int row = 2; row <= rowCount; row++) // 1. satır başlık, 2'den başlıyoruz
{
var stokAdi = worksheet.Cells[row, 1].Text; // A sütunu
var grupAdi = worksheet.Cells[row, 2].Text; // B sütunu
stokListesi.Add(new StokModel
{
StokAdi = stokAdi,
GrupAdi = grupAdi
});
}
}
}
catch (Exception ex)
{
// Hata mesajı
ViewBag.ErrorMessage = "Veri okunurken hata oluştu: " + ex.Message;
}
return stokListesi;
}
}
// StokModel
public class StokModel
{
public string StokAdi { get; set; }
public string GrupAdi { get; set; }
}
}
`
ExcelFileReader
`using OfficeOpenXml;
using stokambarmuhasebe.Models;
using System.Collections.Generic;
using System.IO;
namespace stokambarmuhasebe.StokListe // StokListe klasöründe olacak
{
public class ExcelReader
{
// Excel dosyasındaki verileri okuyacak olan metod
public List<StokModel> ReadExcelData(string filePath)
{
// Verileri tutacak liste
List<StokModel> stokListesi = new List<StokModel>();
// Excel dosyasına erişim sağlamak için fileInfo nesnesi oluşturuyoruz
FileInfo fileInfo = new FileInfo(filePath);
// EPPlus ile dosyayı açıyoruz
using (var package = new ExcelPackage(fileInfo))
{
// İlk sayfayı (worksheet) alıyoruz
var worksheet = package.Workbook.Worksheets[0]; // İlk sayfa
// Satır sayısını alıyoruz
var rowCount = worksheet.Dimension.End.Row;
// Excel dosyasındaki her satır için verileri okuyoruz
for (int row = 2; row <= rowCount; row++) // Başlık satırını atlıyoruz (row = 2)
{
// Hücrelerden verileri alıyoruz
var stokAdi = worksheet.Cells[row, 1].Text; // A sütunu
var grupAdi = worksheet.Cells[row, 2].Text; // B sütunu
// Verileri modele ekliyoruz
stokListesi.Add(new StokModel
{
StokAdi = stokAdi,
GrupAdi = grupAdi
});
}
}
// Sonuçları geri döndürüyoruz
return stokListesi;
}
}
}
`