使用Aspose插件對Excel操作

来源:http://www.cnblogs.com/Tangcy/archive/2016/05/28/5537992.html
-Advertisement-
Play Games

使用使用Aspose插件對Excel文檔進行導入導出操作 使用前請先下載Aspose插件引用 Excel導入: 前臺使用file標簽獲取,submit方式提交。 後臺接收: ...


使用使用Aspose插件對Excel文檔進行導入導出操作

使用前請先下載Aspose插件引用

Excel導入:

 

前臺使用file標簽獲取,submit方式提交。

<form id="form1" enctype="multipart/form-data" method="post" >
 <table class="table-condensed">
<tr>
                    <td class="text-right">導入表格:</td>
                    <td class="text-left"><input type="file" name="file1" class="btn btn-default btn-lg" /></td>
</tr>
<tr>
                    <td class="text-left">
                        <input type="submit" id="btnImport" name="btnImport" value="導入" class="btn btn-default" />
                    </td>
                </tr>
</table>

</form>

後臺接收:

HttpPostedFileBase fileBase = Request.Files["file1"];//這裡獲取名稱與前臺標簽name保持一致
if (fileBase != null)
            {
                string filename = Path.GetFileName(fileBase.FileName);
                string extension = Path.GetExtension(filename);
                string path = "/Upload/Test/" + DateTime.Now.ToString("yyyyMMdd") + "/";
                Directory.CreateDirectory(Path.GetDirectoryName(Request.MapPath(path)));
                string newFilename = DateTime.Now.ToString("yyyyMMddHHmmssfff");
                string fullFileName = path + newFilename + extension;
                fileBase.SaveAs(Request.MapPath(fullFileName));
          try
                {
            Stopwatch sw = new Stopwatch();//記錄導入操作用時多長
                    sw.Start();
//這裡可放入BLL方法處理
string result = new ProductBLL().ImportExcel(Request.MapPath(path), newFilename, extension);

//BLL方法 ProductBLL
public string ImportExcel(string path, string filename, string extension)
        {
            Workbook workbook = new Workbook(path + filename + extension);
            Worksheet worksheet = workbook.Worksheets[0];
            Cells cells = worksheet.Cells;
            for (int i = 1; i < cells.Rows.Count; i++)
            {
                try
                {
                    string brand = cells[i, 0].StringValue.Trim();//獲取列值
                    string years = cells[i, 1].StringValue.Trim();
                }
                catch (Exception e)
                {
                    continue;
                }

            }
            return "OK";
        }         sw.Stop();
long runTime = sw.ElapsedMilliseconds / 1000; //獲取到操作用時多少秒       }       catch (Exception e) { Log.Write("導入", "導入錯誤", "錯誤信息:" + e.Message); } }

Excel導出:
string path = "/Upload/Test/" + DateTime.Now.ToString("yyyyMMdd") + "/";
            Directory.CreateDirectory(Path.GetDirectoryName(Server.MapPath(path)));
            string newFilename = DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xls";
            string fullFileName = Server.MapPath(path + newFilename);

public void ExportInfo(List<Test> list, string fullFileName)
        {
Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook();
            Aspose.Cells.Worksheet cellSheet = workbook.Worksheets[0];

            cellSheet.PageSetup.LeftMargin = 0.3;//左邊距
            cellSheet.PageSetup.RightMargin = 0.3;//右邊距
            cellSheet.PageSetup.TopMargin = 1;//上邊距
            cellSheet.PageSetup.BottomMargin = 0.5;//下邊距
            cellSheet.PageSetup.FooterMargin = 0.5;//頁腳
            cellSheet.PageSetup.HeaderMargin = 0.5;//頁眉
            cellSheet.PageSetup.Orientation = PageOrientationType.Landscape;
            cellSheet.PageSetup.CenterHorizontally = true;//水平居中
            cellSheet.PageSetup.CenterVertically = true;

cellSheet.Cells[0, 0].PutValue("貨號");
            cellSheet.Cells[0, 1].PutValue("顏色");
            cellSheet.Cells[0, 2].PutValue("尺碼");

int i = 1;
            foreach (var item in list)
            {
cellSheet.Cells[i, 0].PutValue(item.productno);
                cellSheet.Cells[i, 1].PutValue(item.size);
                cellSheet.Cells[i, 2].PutValue(item.color);
i++;
            }
cellSheet.AutoFitColumns();

            fullFileName = Path.GetFullPath(fullFileName);
            workbook.Save(fullFileName);
}    

return File(fullFileName, "application/ms-excel", UserName + "_Test單" + newFilename);// 方法Action里直接返回File文件下載。

//DataTable數據源導出,封裝ToExcel方法。
da.ToExcel(fullFileName);
return File(fullFileName, "application/ms-excel", UserName + "_Test單" + newFilename);

     /// <summary>
        /// DataTable數據表保存至Excel
        /// </summary>
        /// <param name="dt">數據源</param>
        /// <param name="fullFileName">文件完整路徑</param>
        public static void ToExcel(this System.Data.DataTable dt, string fullFileName)
        {

            Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook();
            Aspose.Cells.Worksheet cellSheet = workbook.Worksheets[0];

            cellSheet.Name = dt.TableName;

            int rowIndex = 0;
            int colIndex = 0;
            int colCount = dt.Columns.Count;
            int rowCount = dt.Rows.Count;

            //列名的處理
            for (int i = 0; i < colCount; i++)
            {
                cellSheet.Cells[rowIndex, colIndex].PutValue(dt.Columns[i].ColumnName);
                //cellSheet.Cells[rowIndex, colIndex].SetStyle.Font.IsBold = true;
                //cellSheet.Cells[rowIndex, colIndex].Style.Font.Name = "宋體";
                colIndex++;
            }

            Aspose.Cells.Style style = workbook.Styles[workbook.Styles.Add()];
            style.Font.Name = "Arial";
            style.Font.Size = 10;
            Aspose.Cells.StyleFlag styleFlag = new Aspose.Cells.StyleFlag();
            cellSheet.Cells.ApplyStyle(style, styleFlag);

            rowIndex++;

            for (int i = 0; i < rowCount; i++)
            {
                colIndex = 0;
                for (int j = 0; j < colCount; j++)
                {
                    cellSheet.Cells[rowIndex, colIndex].PutValue(dt.Rows[i][j].ToString());
                    colIndex++;
                }
                rowIndex++;
            }
            cellSheet.AutoFitColumns();

            fullFileName = Path.GetFullPath(fullFileName);
            workbook.Save(fullFileName);
        }
 由於抽取部分代碼出來,排版和引用方面未做詳細註釋,前臺和後臺方法對應即可。


 
做個筆記日後方便自己查看使用。做個筆記日後方便自己查看使用。做個筆記日後方便自己查看使用。做個筆記日後方便自己查看使用。

 
 
 

 


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

-Advertisement-
Play Games
更多相關文章
  • 手動安裝交叉編譯工具鏈: 第一步:準備事先下載好的安裝包 :arm-2009q3.tar.br2(下載地址:https://yunpan.cn/OcSEWQvsjFgntk 訪問密碼 311e)將安裝包放到虛擬機的共用文件夾下 在linux中,用戶自己裝程式一般裝在/usr/local 下 /bin ...
  • 這是第一次在博客園中寫自己的隨筆,也是第一次使用Markdown的編輯環境,值得紀念一下!希望在以後學習linux的道路上能多多記錄自己的學習心得和遇到問題的解決方法,朝著運維的方向邁出堅實的腳步。 問題描述 最近在編譯一個開源軟體時,在好不容易配置好各種編譯環境之後,由於各種許可權問題還是無法正常進 ...
  • 這是 WIN32 自動創建多級子目錄的 C++ 封裝類,用法簡單。 封裝沒有採用類的靜態函數方式,而是在構造函數裡面直接完成工作。沒什麼具體的原因,只是當時做成這樣了,這麼多年就一直這樣用了。 #ifndef lxx_hss_auto_create_folder_hss #define __HSS_... ...
  • http://code.csdn.net/news/2820879 想出一個難破解且容易記的密碼對不是一件簡單的事情。在我為電腦設定一個新密碼,或者線上註冊了一個新的賬號,需要輸入密碼的時候,腦袋就一片空白。不過,Linux下有幾個密碼生成工具可以使用,每一個工具都有自己的辦法生成安全的密碼。 1. ...
  • 最近用到了rsync的非同步非同備份,一個簡單的rsync同步配置,總結起來有以下幾個步驟: 1)服務端配置:vim /etc/rsyncd.conf 進入編輯,加入如下配置: 2) 創建所需要備份的目錄,添加上面配置的虛擬用戶:useradd wlpt -s /sbin/nologin. 3) 修改 ...
  • Hello, Android Android 開發與 Xamarin 簡介 在這兩節指南中,我們將 (使用 Xamarin Studio或 Visual Studio)建立我們的第一個 Xamarin.Android 應用程式 並理解使用Xamarin 開發Android 應用程式的基本原理的。在這 ...
  • 最近我一直在編寫適用於Windows 10商店的游戲.這款游戲比較怕玩家用修改器改金錢,因為這種修改會導致某些內購失效並且損害公平性。於是我把自己見過的三種反修改器的方法給網友們介紹一下。 首先說明一下我總結的防止游戲作弊的理念: 1.預防修改,防患於未然,讓可用的修改手段減少。 比如說,你讓你的U ...
  • WPF的中模板有三種:ControlTemplate、ItemsPanelTemplate、DataTemplate,他們繼承抽象類FrameworkTemplate,下麵是它們的繼承關係: Windows Presentation Foundation (WPF) 中的控制項具有 ControlTe... ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...