Aspose.Cells導出excel

来源:http://www.cnblogs.com/zhyue93/archive/2016/09/28/excel_1.html
-Advertisement-
Play Games

Aspose.Cells導出excel,處理Datatable,下載地址編碼(中文),虛擬路徑&物理路徑 ...


利用Aspose.Cells導出excel

註意的問題

1、DataTable的處理

2、進行編碼,便於中文名文件下載

3、別忘了Aspose.Cells.dll(可以自己在網上搜索)

public static bool DataTableToExcel2(DataTable datatable, string filepath, out string error)
{
    error = "";
    Aspose.Cells.Workbook wb = new Aspose.Cells.Workbook();

    try
    {
        if (datatable == null)
        {
            error = "DataTableToExcel:datatable 為空";
            return false;
        }

        //為單元格添加樣式    
        Aspose.Cells.Style style = wb.Styles[wb.Styles.Add()];
        //設置居中
        style.HorizontalAlignment = Aspose.Cells.TextAlignmentType.Center;
        //設置背景顏色
        style.ForegroundColor = System.Drawing.Color.FromArgb(153, 204, 0);
        style.Pattern = BackgroundType.Solid;
        style.Font.IsBold = true;

        int rowIndex = 0;
        for (int i = 0; i < datatable.Columns.Count; i++)
        {
            DataColumn col = datatable.Columns[i];
            string columnName = col.Caption ?? col.ColumnName;
            wb.Worksheets[0].Cells[rowIndex, i].PutValue(columnName);
            wb.Worksheets[0].Cells[rowIndex, i].SetStyle(style);
        }
        rowIndex++;

        foreach (DataRow row in datatable.Rows)
        {
            for (int i = 0; i < datatable.Columns.Count; i++)
            {
                wb.Worksheets[0].Cells[rowIndex, i].PutValue(row[i].ToString());
            }
            rowIndex++;
        }

        for (int k = 0; k < datatable.Columns.Count; k++)
        {
            wb.Worksheets[0].AutoFitColumn(k, 0, 150);
        }
        wb.Worksheets[0].FreezePanes(1, 0, 1, datatable.Columns.Count);
        wb.Save(filepath);
        return true;
    }
    catch (Exception e)
    {
        error = error + " DataTableToExcel: " + e.Message;
        return false;
    }

}

protected void btnExport_Click(object sender, EventArgs e)
{//導出
    int ClassID = 0;
    int.TryParse(hidClassID.Value, out ClassID);
    string error = "";
    string filepath = "";
    BLL.TUser bll_TUser = new BLL.TUser();
    BLL.TClass bll_Class = new BLL.TClass();
    Model.TClass model = (new BLL.TClass()).GetModel(ClassID);

    //處理DataTable
    DataTable dt = bll_TUser.GetListByClass(ClassID);
    DataTable dtNew = new DataTable();
    dtNew.Columns.Add("姓名", typeof(string));
    dtNew.Columns.Add("學號", typeof(string));
    dtNew.Columns.Add("性別", typeof(string));
    dtNew.Columns.Add("電話", typeof(string));
    if (dt != null && dt.Rows.Count > 0)
    {
        DataRow drNew = dtNew.NewRow();

        foreach (DataRow dr in dt.Rows)
        {
            //drNew = dtNew.NewRow();
            drNew["姓名"] = dr["UserName"];
            drNew["學號"] = dr["IDNO"];
            drNew["性別"] = dr["Sex"].ToString() == "1" ? "" : (dr["Sex"].ToString() == "2" ? "" : "");
            drNew["電話"] = dr["Phone"];
            dtNew.Rows.Add(drNew.ItemArray);
        }
    }

    if (model != null)
    {
        filepath = "/UploadFiles/ExportClass/";// + model.ClassName + ".xlsx";
        string filaname = model.ClassName + ".xlsx";
        string finalPath = MapPath("~" + filepath + filaname);
        //檢查有該路徑是否就創建
        if (!Directory.Exists(MapPath("~/UploadFiles/ExportClass/")))
        {
            Directory.CreateDirectory(MapPath("~/UploadFiles/ExportClass/"));
        }
        if (DataTableToExcel2(dtNew, finalPath, out error))
        {
            string SiteRoot = "http://" + Request.Url.Authority.ToString() + filepath + Uri.EscapeDataString(filaname); //進行編碼,便於中文名文件下載
            //下載excel
            ClientScript.RegisterStartupScript(this.GetType(), "", ",<script type='text/javascript'>window.open('" + SiteRoot + "');</script>");
        }
        else
        {
            ClientScript.RegisterStartupScript(this.GetType(), "", "<script type='text/javascript'>alert('提示', '" + error + "!');</script>");
        }
    }
    else
    {
        ClientScript.RegisterStartupScript(this.GetType(), "", "<script type='text/javascript'>alert('提示', '班級不存在!');</script>");
    }
}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文記錄的是自己在學習《Linux私房菜》中正則表達式的筆記。 關於行尾符$ 如果文件本身沒有內容,比如使用touch新建的文件,那麼$將會沒有意義。例如下麵操作: 先使用touch新建了一個test.txt文件,然後嘗試使用sed命令去在行尾增加內容,但是沒有成功(緊接著的cat命令沒有輸出任何東 ...
  • 今天分享一個linux命令:mv 1. 命令作用 a. 移動文件 b. 修改文件或者目錄的名稱 2. 舉例說明 場景:/home/user1/test1下麵有一個文件a.txt、b.txt, test2文件夾與test1文件夾同在/home/user1下麵 移動文件: 將a.txt移動到test2下 ...
  • 橋接:區域網/路由器內獲取IP,IP地址發生變化, NAT方式或者僅主機模式(Host-only):把本機電腦當做轉換機去獲取IP,不能禁止使用,IP不會變換, 網路 屬性 更改適配器設置 VMnet1-->Hostonly(不能上外網) VMnet8-->NAT ...
  • 接觸C#開發已經四個月,整理下C#中的命名規則: 一:變數的命名規則(和Java相似) 1、變數名由字母、數字、下劃線組成 2、變數名開頭只能以字母、下劃線開頭,不能以數字開頭 3、區分大小寫 4、命名規範:一般遵循camel(駱駝命名法)——首字母小寫第二個單詞的首字母大寫例如myName 二:類 ...
  • 本文主要是對unity中如何在Android和iOS中調用Native API進行介紹。 首先unity支持在C#中調用C++ dll,這樣可以在Android和iOS中提供C++介面在unity中調用。利用這一特性,可以擴展unity的功能。例如集成和調用第三方庫。同時為了滿足對unity介面的一 ...
  • 本次要分享的是利用windows+nginx+iis+redis+Task.MainForm組建分散式架構,上一篇分享文章製作是在windows上使用的nginx,一般正式發佈的時候是在linux來配置nginx,我這裡測試分享內容只是起引導作用;下麵將先給出整個架構的核心節點簡介,希望各位多多點贊 ...
  • .NET Core 超強性能測試組件BenchmarkDotNet 支持Full .NET Framework, .NET Core (RTM), Mono。 BenchmarkDotNet支持 C#, F#, 和Visual Basic,可以跨平臺運行。 而且支持各種報表導出,相當的方便。 Git ...
  • 命名空間:(記得引入ASPJPEGLib.dll) usingAspose.Words; 1.創建word模版,使用MergeFeild綁定數據 新建一個Word文檔,命名為Template.doc 打開Template.doc必須在菜單的"插入→文檔部件→域”找到MergeField並輸入相應的域 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...