C# ASP.NET Excel Görüntüleyici

Web uygulamanızda Microsoft Excel çalışma sayfalarını görüntülemek istiyor musunuz? Bir ASP.NET MVC Excel Görüntüleyicisi mi arıyorsunuz? Evet ise, kesinlikle doğru bir yere indiniz. Bu blogda, bir Excel Viewer oluşturmayı ve C# kullanarak ASP.NET MVC uygulamalarında Excel çalışma sayfalarını nasıl görüntüleyeceğinizi öğreneceksiniz. Birkaç dakika geçirdikten ve bazı basit adımları izledikten sonra, kendi Excel (XLS veya XLSX) Görüntüleyicinizi hazır ve çalışır durumda bulacaksınız. Öyleyse başlayalım.

ASP.NET MVC Excel Viewer’ın Özellikleri

ASP.NET Excel Viewer’ımız aşağıdaki özelliklere sahip olacaktır ve bunları ihtiyaçlarınıza göre geliştirebilirsiniz.

  1. Excel dosyalarına göz atın ve görüntüleyin.
  2. Sayfa yüklemesinde varsayılan Excel dosyasını yükleyin.
  3. Excel çalışma sayfaları arasında gezinmek için sekmeler.

ASP.NET MVC’de Excel Viewer Oluşturma Adımları

ASP.NET MVC’de Excel dosyalarını görüntülemek için bazı kolay adımlar aşağıda verilmiştir.

  1. Visual Studio’da yeni bir ASP.NET MVC web uygulaması oluşturun.
ASP.NET MVC Web Uygulaması
  1. NuGet Paket Yöneticisi’ni açın ve Aspose.Cells for .NET paketini kurun.
ASP.NET'te Excel dosyalarını tarayıcıda görüntüleyin
  1. Excel dosyalarını saklamak için yeni bir “Belgeler” klasörü ve işlenmiş görüntüleri kaydetmek için “Rendered” bir alt klasör oluşturun.

  2. Kök klasörde “Yardımcılar” adıyla yeni bir klasör oluşturun.

  3. Excel çalışma sayfalarının bilgilerini depolamak için “Yardımcılar” klasöründe “Sayfa” adıyla yeni bir sınıf oluşturun.

public class Sheet
{
	public string SheetName { get; set; }
	public string Path { get; set; }
}
  1. “HomeController” sınıfını açın ve kodunu aşağıdaki ile değiştirin. Dizin eyleminde varsayılan Excel dosyasının adını değiştirdiğinizden emin olun.
public class HomeController : Controller
{
	public List<Sheet> sheets;

	[HttpGet]
	public ActionResult Index(string fileName)
	{
		sheets = new List<Sheet>();
		if (fileName == null)
		{
			// Sayfa yüklemesinde varsayılan Çalışma Sayfasını görüntüle
			sheets = RenderExcelWorksheetsAsImage("Workbook.xlsx");
		}
		else
		{
			sheets = RenderExcelWorksheetsAsImage(fileName);
		}

		return View(sheets);
	}
	public List<Sheet> RenderExcelWorksheetsAsImage(string FileName)
	{
		// Excel çalışma kitabını yükleyin 
		Workbook book = new Workbook(Server.MapPath(Path.Combine("~/Documents", FileName)));
		var workSheets = new List<Sheet>();
		// Görüntü oluşturma seçeneklerini ayarlayın
		ImageOrPrintOptions options = new ImageOrPrintOptions();
		options.HorizontalResolution = 200;
		options.VerticalResolution = 200;
		options.AllColumnsInOnePagePerSheet = true;
		options.OnePagePerSheet = true;
		options.TextCrossType = TextCrossType.Default;
		options.ImageType = Aspose.Cells.Drawing.ImageType.Png;

		string imagePath = "";
		string basePath = Server.MapPath("~/");

		// Excel çalışma kitabı oluşturucu oluştur
		WorkbookRender wr = new WorkbookRender(book, options);
		// Çalışma sayfalarını kaydedin ve görüntüleyin
		for (int j = 0; j < book.Worksheets.Count; j++)
		{
			imagePath = Path.Combine("/Documents/Rendering", string.Format("sheet_{0}.png", j));
			wr.ToImage(j, basePath + imagePath);
			workSheets.Add(new Sheet { SheetName = string.Format("{0}", book.Worksheets[j].Name), Path = imagePath });
		}

		return workSheets;
	}
}
  1. Views/Home/index.cshtml dosyasını açın ve içeriğini aşağıdaki komut dosyasıyla değiştirin.
@{
    ViewBag.Title = "Home Page";
    string[] files = Directory.GetFiles(Server.MapPath("~/Documents/"), "*.xlsx");
}
@model List<Excel_Viewer.Helper.Sheet>
@{
    Layout = null;
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Excel Viewer</title>
    <!-- CSS Includes -->
    <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<body>
    <div class="container">
        <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
            <a class="navbar-brand" href="#">Spreadsheet Viewer</a>
            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="navbarNav">
                <ul class="navbar-nav">
                    <li class="nav-item active">
                        <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">
                            browse
                        </button>
                    </li>
                </ul>
            </div>
        </nav>
        <br />
        <ul class="nav nav-tabs" id="myTab" role="tablist">
            @for (int i = 0; i < Model.Count; i++)
            {
                if (i == 0)
                {
                    <li class="nav-item">
                        <a class="nav-link active" id="@Model[i].SheetName.Replace(' ','_')-tab" data-toggle="tab" href="#@Model[i].SheetName.Replace(' ','_')" role="tab" aria-controls="@Model[i].SheetName">@Model[i].SheetName</a>
                    </li>
                }
                else
                {
                    <li class="nav-item">
                        <a class="nav-link" id="@Model[i].SheetName.Replace(' ','_')-tab" data-toggle="tab" href="#@Model[i].SheetName.Replace(' ','_')" role="tab" aria-controls="@Model[i].SheetName">@Model[i].SheetName</a>
                    </li>
                }
            }
        </ul>
        <div class="tab-content" id="myTabContent">
            @for (int i = 0; i < Model.Count; i++)
            {
                if (i == 0)
                {
                    <div class="tab-pane fade show active" id="@Model[i].SheetName.Replace(' ','_')" role="tabpanel"><br />
                        <div class="card">
                            <div class="card-body"> <img src="@Model[i].Path" style="width: 11in" /></div>
                        </div>
                    </div>
                }
                else
                {
                    <div class="tab-pane fade" id="@Model[i].SheetName.Replace(' ','_')" role="tabpanel"><br />
                        <div class="card">
                            <div class="card-body"> <img src="@Model[i].Path" style="width: 11in" /></div>
                        </div>
                    </div>
                }
            }
        </div>
    </div>
    <!-- Modal -->
    <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title" id="exampleModalLabel">Select a file</h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
                <div class="modal-body">
                    <div class="list-group">
                        @foreach (string s in files)
                        {
                            string fileName = Path.GetFileName(s);
                            @Html.ActionLink(fileName, "Index", "Home", new { fileName = fileName }, new { @class = "list-group-item" })
                        }
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
                </div>
            </div>
        </div>
    </div>
    <!-- JS includes -->
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    <script src="//netdna.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script> @**@
    <script src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js"></script>
    <script src="//ajax.aspnetcdn.com/ajax/mvc/4.0/jquery.validate.unobtrusive.min.js"></script>
</body>
</html>
  1. Uygulamayı oluşturun ve favori tarayıcınızda çalıştırın.

ASP.NET MVC Viewer’da Excel Dosyalarını Görüntüleme - Demo

Uygulamayı ilk kez başlattığınızda varsayılan Excel dosyası görüntülenecektir.

ASP.NET C#'ta Excel Görüntüleyici

Bir Excel Dosyası Açın

Bir Excel dosyasını açmak için gözat düğmesine tıklayın ve listeden dosyayı seçin.

Excel Dosyalarına Göz Atın
ASP.NET C# ile Excel dosyasını açın

Sekmeleri Kullanarak Excel Çalışma Sayfaları Arasında Gezinme

Excel çalışma kitabındaki tüm çalışma sayfaları sekmeler şeklinde görüntülenecektir. Çalışma sayfaları arasında gezinmek için sekmelere tıklayabilirsiniz.

ASP.NET'te Excel Dosyalarını Görüntüleme

Kaynak Kodunu İndir

Bu uygulama açık kaynaktır ve kaynak kodu GitHub üzerinde mevcuttur.

Aspose.Cells for .NET için Geçici Lisans Alın

Değerlendirme/deneme sınırlamalarından kaçınmak için Aspose.Cells for .NET API’nin geçici lisansını alabilirsiniz.