如何在asp.net mvc中将Webcontrol表导出到excel

Posted

技术标签:

【中文标题】如何在asp.net mvc中将Webcontrol表导出到excel【英文标题】:How to Export Webcontrol table to excel in asp.net mvc 【发布时间】:2017-12-08 14:15:21 【问题描述】:
List<Table> t = (List<Table>)GenerateLayout(dtDPList, dtBOList, dpl);

在列表中,我得到了 3 个 Webcontrol 表,我想将这些 webconrol 表导出到 excel.. 所以请帮助我..

【问题讨论】:

固定代码缩进。 【参考方案1】:

您可以使用以下通用方法将数据表转换为excel:

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Excel = Microsoft.Office.Interop.Excel;

namespace ExcelDemo

    public class ExcelUtility
    
    public static void CreateExcel(DataSet ds, string excelPath)
    
        Excel.Application xlApp;
        Excel.Workbook xlWorkBook;
        Excel.Worksheet xlWorkSheet;
        object misValue = System.Reflection.Missing.Value;

        try
        
            xlApp = new Excel.ApplicationClass();
            xlWorkBook = xlApp.Workbooks.Add(misValue);
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

            for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
            
                for (int j = 0; j <= ds.Tables[0].Columns.Count - 1; j++)
                
                    xlWorkSheet.Cells[i + 1, j + 1] = ds.Tables[0].Rows[i].ItemArray[j].ToString();
                
            

            xlWorkBook.SaveAs(excelPath, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
            xlWorkBook.Close(true, misValue, misValue);
            xlApp.Quit();

            releaseObject(xlApp);
            releaseObject(xlWorkBook);
            releaseObject(xlWorkSheet);
        
        catch (Exception ex)
        
            throw ex;
        
    

    private static void releaseObject(object obj)
    
        try
        
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
            obj = null;
        
        catch
        
            obj = null;
        
        finally
        
            GC.Collect();
        
     

您可以直接将样式属性应用于单元格,如下所示:

workSheet.Cells[2, 1].Font.Bold = true

您可以使用以下链接找到更多样式标签:

http://csharp.net-informations.com/excel/csharp-format-excel.htm

【讨论】:

for (int i = 0; i 大哥,样式怎么应用??我使用 xlWorkSheet.Rows[i].Style = t[0].Rows[i].Style;在 for 循环中,但它显示错误,所以请帮助我.. 您需要创建一个样式对象,然后需要定义样式属性。然后您可以将样式对象分配给工作簿。请查看更新答案。希望对您有所帮助。 您可以在-techbrij.com/export-excel-xls-xlsx-asp-net-npoi-epplus中找到更多详细信息【参考方案2】:

列表列表 = GenerateLayout(dt1,dt2,dpl); Response.ClearContent(); Response.AddHeader("content-disposition", "attachment;filename=DeliveryPickList.xls"); Response.AddHeader("Content-Type", "application/vnd.ms-excel");

        using (StringWriter sw = new StringWriter())
        
            using (htmlTextWriter htw = new HtmlTextWriter(sw))
            
                list[0].RenderControl(htw);
                TextWriter output= Response.Output;
                output.Write(sw.ToString());
            
        
        using (StringWriter sw = new StringWriter())
        
            using (HtmlTextWriter htw = new HtmlTextWriter(sw))
            
                list[1].RenderControl(htw);
                TextWriter output = Response.Output;
                output.Write(sw.ToString());
            
        
        using (StringWriter sw = new StringWriter())
        
            using (HtmlTextWriter htw = new HtmlTextWriter(sw))
            
                list[2].RenderControl(htw);
                TextWriter output = Response.Output;
                output.Write(sw.ToString());
            
        
        Response.End();

【讨论】:

以上是关于如何在asp.net mvc中将Webcontrol表导出到excel的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET CORE 5.0 MVC 中将登录设置为默认路由

如何在 ASP.NET MVC 中将 CSS 类应用于 Html.ActionLink?

如何在 asp.net mvc4 中将 OpenID 迁移到 OAuth

如何在asp.net mvc中将Webcontrol表导出到excel

如何在 MVC .ASP NET 中将变量从字符串转换为 int [重复]

如何在 ASP.NET MVC 中将条带支付与自定义表单集成? [关闭]