2020年10月19日 星期一

MVC 使用EPPlus 匯出Excel

 匯出Excel算是很常用到的功能,所以記下來

1.建立一個Web 專案

2.使用Nuget   Key 下EPPlus  並安裝



3.在index的畫面中加入前端程式碼

<div class="row">
    <div class="col-4">

    </div>
    <div class="col-6">
        <h6>
            <a href="@Url.Action("ExportExcel","Home",new { Id = 1 }) " class="btn btn-success">
             匯出Excel
            </a>            
        </h6>
    </div>
</div>

假設需要帶參數如Id 就如圖,否則只需要@Url.Action("ExportExcel","Home")



4.再來是HomeController的部份先把需要的using 進來

using OfficeOpenXml;
using System.IO;


5.接下來是程式碼的部份
建立一個 public ActionResult ExportExcel(string Id) 
Id是用來接收前端剛剛設定的參數

接下來直接上碼

 public ActionResult ExportExcel(string Id) 
{
            //建立Excel
            ExcelPackage ep = new ExcelPackage();

            //填入資料
            //建立第一個Sheet,後方為定義Sheet的名稱
            ExcelWorksheet sheet1 = ep.Workbook.Worksheets.Add("頁簽1");
            int col = 1;    //欄:直的,因為要從第1欄開始,所以初始為1

            //第1列是標題列 
            sheet1.Cells[1, col++].Value = "標題1";
            sheet1.Cells[1, col++].Value = "標題2";
            sheet1.Cells[1, col++].Value = "標題3";
            sheet1.Cells[1, col++].Value = "標題4";
           
            //資料從第2列開始
            int row = 2;    //列:橫的
            int rowcount = 1;
            
            col = 1;//每換一列,欄位要從1開始
                    //指定Sheet的欄與列將資料寫入
            sheet1.Cells[row, col++].Value = rowcount;
            sheet1.Cells[row, col++].Value = "";
            sheet1.Cells[row, col++].Value = "";
            sheet1.Cells[row, col++].Value = DateTime.Now.ToString("yyyy-MM-dd");           
            row++;
            rowcount++;
           
            //Excel檔名
            var fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
            //Save the file to server temp folder
            string fullPath = Path.Combine(Server.MapPath("~/FileTemp"), fileName);
            MemoryStream fileStream = new MemoryStream();
            ep.SaveAs(fileStream);
            ep.Dispose();要記得先將資料寫進MemoryStream在Dispose。
            fileStream.Position = 0;//不重新將位置設為0,excel開啟後會出現錯誤
            return File(fileStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",              fileName);
   }

建置一下來看看前端的畫面,按下匯出Excel,結果GG


原來是要再加入設定

在Web.config中的appSettings中加入設定

<add key="EPPlus:ExcelPackage.LicenseContext" value="NonCommercial" />


再來一次



打開Excel


打完收工!































2020年10月6日 星期二

javascript 字串顯示單引號

 

今天在做手工時,忽然被一個小東西卡住:

在javascript裡組字串時,我要怎麼組出原本需要的單引號?

例如:

let stringHtml = ' <div id="' + ID + '"> ';

stringHtml += '<button class="btn" onclick="clickfun(\' ' + funID + '\')">按我</button>';

stringHtml += ' </div> ';


組字串時用單引號包住內容=>   '內容'

要斷行時用+號 => stringHtml += '字串' 或是 stringHtml = stringHtml + '字串'  

記得每個斷行都要有  分號 ;

but 單引號怎麼辦..只用單一個是認不出來的 ,

如果要顯示單引號就要加點料 =>  \'   先來個反斜線再加上單引號就可以開開心心的顯示出來了!

2020年10月4日 星期日

SQL bit true false

在設計資料庫時.會用到bit 來當成bool來用.但常常忘記true 是 0還是1.特別筆記一下: 


來自微軟的解釋:

SQL Server Database Engine 可將 bit 資料行的儲存體最佳化。 如果資料表中的 bit 資料行小於或等於 8 個,這些資料行會儲存為 1 個位元組。 如果有 9 到 16 個 bit 資料行,則儲存為 2 個位元組,依此類推。

字串值 TRUE 和 FALSE 可以轉換成 bit 值:TRUE 會轉換成 1,FALSE 則轉換成 0。

轉換成位元會將任何非零的值升級成 1。

所以  TRUE就是1  ,FALSE就是0

https://docs.microsoft.com/zh-tw/sql/t-sql/data-types/bit-transact-sql?view=sql-server-ver15

MS-SQL查詢指定資料表的結構

如果今天要修改一個欄位的長度,再來查查看是否有修改成功  1. MS Sql 修改欄位語法 ALTER TABLE MyTable ALTER Column Column_1 nvarchar(10) NOT NULL 2. 方法1 -- 查詢指定資料表的結...