首页 > 解决方案 > 在 ASP.NET 项目 VB 中创建命名空间

问题描述

我正在尝试在 ASP.NET (VB.NET) 项目中使用 EPPlus 包,并且在将代码从 C# 转换为 VB 时遇到问题,并出现错误“'ToDataTable' 不是 'OfficeOpenXml.ExcelPackage' 的成员。我将命名空间文件放在 App_Code 文件夹中是正确的地方吗?

.aspx.vb 页面:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
    If FileUpload1.HasFile Then

        If Path.GetExtension(FileUpload1.FileName) = ".xlsx" Then
            Dim package As ExcelPackage = New ExcelPackage(FileUpload1.FileContent)
            GridView1.DataSource = package.ToDataTable()
            GridView1.DataBind()
        End If
    End If
End Sub

我引用 EPPlus_Import 命名空间的 .aspx 页面

<%@ Page Title="PCA Complaints" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="true" 
CodeFile="Default.aspx.vb" Inherits="EPPlus_Code" %>
<%@ Import Namespace="EPPlus_Import" %>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
<asp:FileUpload ID="fileUpload1" runat="server" CssClass="btn-primary btn-sm" />

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
CssClass="table table-hover table-striped table-bordered table-condensed GridView">
</asp:GridView>

我把这个文件放在 App_Code 文件夹中,不确定它是否属于那里。

Imports OfficeOpenXml
Imports System.Data
Imports System.Linq
Imports System.Runtime.CompilerServices

Namespace EPPlus_Import

Module ExcelPackageExtensions
    <Extension()>
    Function ToDataTable(ByVal package As ExcelPackage) As DataTable
        Dim workSheet As ExcelWorksheet = package.Workbook.Worksheets.First()
        Dim table As DataTable = New DataTable()

        For Each firstRowCell In workSheet.Cells(1, 1, 1, workSheet.Dimension.[End].Column)
            table.Columns.Add(firstRowCell.Text)
        Next

        For rowNumber = 2 To workSheet.Dimension.[End].Row
            Dim row = workSheet.Cells(rowNumber, 1, rowNumber, workSheet.Dimension.[End].Column)
            Dim newRow = table.NewRow()

            For Each cell In row
                newRow(cell.Start.Column - 1) = cell.Text
            Next

            table.Rows.Add(newRow)
        Next

        Return table
    End Function
End Module
End Namespace

标签: asp.netvb.netepplus

解决方案


推荐阅读