如何在Web应用程序中使用EPPlus删除XLSX文件的列

如何在Web应用程序中使用EPPlus删除.XLSX文件的列?

我使用EPplus生成Excel报告和存储过程以从数据库获取数据。

问题是,我想删除EPplus报告文件中的一列信息(存储过程不应该改变)。

我会删除额外的列,也想改变页面布局的方向(从右到左),但它不起作用

 '----/// Click Report Button ///---- Protected Sub btnExcel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExcel.Click If "MYcondition is true" Then GenerateXLSXFile(CreateDataTable()) End If End Sub '----/// Generate Report ///---- Private Sub GenerateXLSXFile(ByVal tbl As DataTable) Dim excelPackage = New ExcelPackage Dim excelWorksheet = excelPackage.Workbook.Worksheets.Add("My_Worksheet") excelWorksheet.View.ShowGridLines = False excelWorksheet.Cells.Style.Border.Bottom.Style = Style.ExcelBorderStyle.Thick excelWorksheet.Cells("A5").LoadFromDataTable(tbl, True) '-----/// Hide a Column ///--------- excelWorksheet.Column(2).Hidden = True '----/// Change PageLayout Direction ///--------------- excelWorksheet.View.PageLayoutView = excelWorksheet.View.RightToLeft excelWorksheet.Cells("A5").Value = "header_1" excelWorksheet.Cells("B5").Value = "header_2" excelWorksheet.Cells("C5").Value = "header_3" Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" Response.AddHeader("content-disposition", "attachment; filename=My_ExcelName.xlsx") Dim stream As MemoryStream = New MemoryStream(excelPackage.GetAsByteArray()) Response.OutputStream.Write(stream.ToArray(), 0, stream.ToArray().Length) Response.Flush() Response.Close() End Sub '----/// Create Data Table for Exel Report (use stored procedure) ///---- Private Function CreateDataTable() As DataTable Dim dataTable As New DataTable("tbl_Name") Dim dataAdapter As New SqlDataAdapter() Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("ProvidersCS").ToString) Dim cmd As New SqlCommand("My Select Command", conn) cmd.CommandType = CommandType.StoredProcedure Try conn.Open() dataAdapter.SelectCommand = cmd dataAdapter.Fill(dataTable) Catch ex As Exception Finally conn.Close() End Try Return dataTable End Function 

EPPlus API上的“插入和删除列”方法尚未实现,因为对于具有单元存储区当前devise的大型工作表而言,该方法效果不佳。

删除列的唯一方法是自己移动单元格。

本主题是对EPPlus Codeplex Page的讨论。

参考= http://epplus.codeplex.com/discussions/262729