C# ASP.NET Excel 查看器

您想在 Web 應用程序中顯示 Microsoft Excel 工作表嗎?您在尋找 ASP.NET MVC Excel 查看器嗎?如果是,那麼您已經降落在一個絕對正確的地方。在此博客中,您將學習如何使用 C# 在 ASP.NET MVC 應用程序中創建 Excel 查看器和顯示 Excel 工作表。花費幾分鐘並執行一些簡單的步驟後,您將擁有並運行自己的 Excel(XLS 或 XLSX)查看器。讓我們開始吧。

ASP.NET MVC Excel 查看器的功能

我們的 ASP.NET Excel 查看器將具有以下功能,您可以根據您的要求增強它們。

  1. 瀏覽和查看 Excel 文件。
  2. 在頁面加載時加載默認的 Excel 文件。
  3. 用於在 Excel 工作表之間導航的選項卡。

在 ASP.NET MVC 中創建 Excel 查看器的步驟

以下是在 ASP.NET MVC 中查看 Excel 文件的一些簡單步驟。

  1. 在 Visual Studio 中創建一個新的 ASP.NET MVC web 應用程序。
ASP.NET MVC 網絡應用程序
  1. 打開 NuGet 包管理器並安裝 Aspose.Cells for .NET 包。
在瀏覽器中查看 ASP.NET 中的 Excel 文件
  1. 創建一個新文件夾“Documents”以保存 Excel 文件,並創建一個子文件夾“Rendered”以保存渲染圖像。

  2. 在根文件夾中創建一個名為“Helpers”的新文件夾。

  3. 在“Helpers”文件夾中新建一個名為“Sheet”的類,用來存放Excel工作表的信息。

public class Sheet
{
	public string SheetName { get; set; }
	public string Path { get; set; }
}
  1. 打開“HomeController”類並將其代碼替換為以下代碼。確保在索引操作中替換默認的 Excel 文件名。
public class HomeController : Controller
{
	public List<Sheet> sheets;

	[HttpGet]
	public ActionResult Index(string fileName)
	{
		sheets = new List<Sheet>();
		if (fileName == null)
		{
			// 在頁面加載時顯示默認工作表
			sheets = RenderExcelWorksheetsAsImage("Workbook.xlsx");
		}
		else
		{
			sheets = RenderExcelWorksheetsAsImage(fileName);
		}

		return View(sheets);
	}
	public List<Sheet> RenderExcelWorksheetsAsImage(string FileName)
	{
		// 加載 Excel 工作簿 
		Workbook book = new Workbook(Server.MapPath(Path.Combine("~/Documents", FileName)));
		var workSheets = new List<Sheet>();
		// 設置圖像渲染選項
		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 工作簿渲染器
		WorkbookRender wr = new WorkbookRender(book, options);
		// 保存和查看工作表
		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 並將其內容替換為以下腳本。
@{
    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. 構建應用程序並在您喜歡的瀏覽器中運行它。

在 ASP.NET MVC 查看器中查看 Excel 文件 - 演示

首次啟動應用程序時,將顯示默認的 Excel 文件。

ASP.NET C# 中的 Excel 查看器

打開 Excel 文件

要打開 Excel 文件,請單擊瀏覽按鈕並從列表中選擇文件。

瀏覽 Excel 文件
在 ASP.NET C# 中打開 Excel 文件

使用選項卡在 Excel 工作表之間導航

Excel 工作簿中的所有工作表將以選項卡的形式顯示。您可以單擊選項卡在工作表之間導航。

在 ASP.NET 中顯示 Excel 文件

下載源代碼

此應用程序是開源的,其源代碼可在 GitHub 上找到。

獲得 Aspose.Cells for .NET 的臨時許可證

您可以獲得 Aspose.Cells for .NET API 的臨時許可,以避免評估/試用限制。