Browse by Tags
All Tags
»
.NET
»
CODE
(
RSS
)
ASP.NET
Javascript
JSON
Linq
ORACLE
Tips
VS2010
中文編碼
CODE - WebClient 下載檔案自動取得檔名
透過 WebClient.DownloadFile() 或 DownloadData() 下載檔案對 .NET 老鳥而言是雕蟲小技(參考: CODE-使用C#程式從網站下載檔案 ),但此種寫法檔名需自行指定。若下載對象非靜態檔案,伺服器端程式會透過 Content-Disposition Response Header 傳回檔名供客戶端參考,WebClient 是否能由 Response Header 自動取得檔名呢? 答案是可以! 程式範例如下: static string DownloadFile...
程式範例:byte[] 不落地壓縮 ZIP 檔
.NET 4.5 起加入 ZipArchive、ZipFile 等列類別,自此不用額外安裝第三方程式庫就能製作 ZIP 檔。微軟官方文件則有篇範例文章, 操作說明:壓縮與解壓縮檔案 - Microsoft Docs ,介紹如何使用 System.IO.Compression 的一系列類別壓縮及解壓縮檔案。 我遇到一個需求,要將使用者在網站查詢的結果,以一筆資料一個檔案形式匯出,再集結壓縮成單一 ZIP 檔方便使用者下載。爬文找到的範例多以檔案形式處理為主,而我想省掉將資料寫成檔案再壓縮的步驟,但直接將記憶體...
野人獻曝 - 極簡風格 .NET Stopwatch 計時法
在 .NET 要測量執行時間,Stopwatch 是最簡單直覺的做法,像這樣: Stopwatch sw = new Stopwatch(); sw.Start(); //...執行要測試的動作 sw.Stop(); //將測得秒數輸出到Console、Debug或Log檔 Console.WriteLine($ "Time={sw.ElapsedMilliseconds:n0}ms" ); 說起來不複雜,但一但測量對象變多,專案將充斥大量 Stopwatch 建立、開始、結束以及記錄時間的程式碼...
CODE-C# 程式讀取 Exchange 共用行事曆
工作遇到新需求:辦公室自動化服務希望讀取使用者行事曆,整合顯示於個人資訊頁。 EWS Managed API 封裝了複雜又囉嗦的 Exchange Web Service SOAP 細節,改以 .NET 程式庫形式提供電子郵件、連絡人、行事曆、公用資料夾的存取管道,是 C# 開發 Exchange 相關程式的首選。(意外發現 EWS Managed API 從 2014 起轉為 Github 開源專案 ,有原始碼在手,搞不懂走不通都有救,用起來格外讓人放心,微軟真的愈來愈開放) 官方文件有篇詳細...
CODE-從 JSON 提取文字內容
從檔案萃取文字部分建立索引是全文檢索的必要程序,先前介紹過 為 PDF、Office 檔案產生文字索引 的做法,實際開發則遇到為 JSON 建立文字索引的需求。借用上回 遞迴文章 的組織資料當實例,假設 JSON 格式如下: { "Name" : "總經理" , "Children" : [ { "Name" : "行政部" , "Children" : [ { "Name"...
CODE-使用 C# 批次列印 PDF 檔案
專案遇到批次列印 PDF 檔需求。 Acrobat Reader 或 Foxit Reader 等常用 PDF 軟體本身就具備傳參數直接列印功能,例如 Acrobat Reader 直接列印 PDF 之語法為:AcroRd32.exe /p /h "pdf路徑" "印表機名稱"(印表機名稱省略時由預設印表機輸出) 基於以上資訊,最直覺的做法是找出 Acrobat Reader EXE 檔(AcroRd32.exe)路徑,在 .NET 程式透過 Process...
CODE - 數字轉英文 C# 函式庫
專案遇上數字轉成英文的需求,例如:1234 需轉為 one thousand two hundred thirty four。 網路上有許多解決方案,程式範例、現成函式庫都有,選擇眾多之下,透過 NuGet 即裝即用才是王道。我找到一個,在 NuGet 搜尋 NUT,第一筆 Nut, Number To Text Converter & Money To Text Converter: 程式為 Open Source, 使用說明與原始碼在 Github 上: https://github...
Json.NET技巧-反序列化還原為不同型別的集合
情境如下,我們定義一個抽象型別Notification保存排程發送通知的資料(包含JobType、ScheduleTime及Message),依發送管道分為電子郵件通知及簡訊通知,故實作成EmailNotification及SMSNotification兩個類別,並各自增加Email及PhoneNo屬性。 using Newtonsoft.Json; using Newtonsoft.Json.Converters; using System; namespace CustCreate { public...
使用Excel維護多國語系字串資源檔
針對多國語系,.NET提供了不錯的解決方案 -- 透過.resx資源檔定義字串,透過ResourceManager或Visual Studio自動產生對應的類別[ *.Designer.cs ]取用。要新增語系支援,只需增加該語系的resx檔,提供各項目對應的文字,配合CultureInfo切換就能輕易切換語系顯示。(延伸閱讀: 逐步解說:使用資源進行 ASP.NET 的當地語系化 ) 像是以下這個例子: 這個例子也剛好突顯維護多國語系常見的困擾。Message.resx中有四個項目,Message...
CODE-將匿名型別陣列匯成CSV
工作的專案有個小需求,使用者羅列了一堆報表匯出需求,基上都是從現存LINQ資料集合以不同條件取出不同欄位。 我想到最簡便的做法是套用Where()查詢,依需求產生匿名型別 Select(o => new { 欄位1 = o.PropA, 欄位2 = o.PropB, 欄位3 = o.PropC … }) 連欄位名稱都隨使用者指定,最後再將查詢結果轉為CSV,幾個步驟就搞定一項報表需求...
CODE-縮短版GUID字串
頗特殊的需求: 一個跨平台整合在傳遞以GUID為Primary Key資料時,對方的參數欄位只接受最長30個字元,即使使用16進位數字表示法(例如: 4854c292c333480890f916d1a062b8e3),GUID字串也長達32字元,超出限制。另外想一種不會重複的識別編號法則是種解法,但要做到GUID等級的唯一性得付出不少代價。因此,另一個思考方向是如何用較短的字串長度表示GUID,評估是較省力的做法。 要比16進位表示法更簡短,最簡便的做法是將其GUID先轉為byte[],再用Base64編碼轉為字串...
防止程式同時執行多份,比檢查Process清單更好的方法
在某些情境下,我們需要限制同一支程式同時間只能執行一份,很直覺的想法是檢查Process清單,由程式名稱在清單中出現一次以上來判斷是否已有同名程式在執行。這個做法直覺有效,在大部分情境也適用,甚至在CodeProject上也不乏類似" 教學範例 ",很自然地,這也一度是我愛用過的解法(誰沒有過去呢?);但是,檢查Process清單並非是最簡潔嚴謹的做法。(前述CodeProject文章的評比只有一顆星,留言中不乏負評,這故事告訴我們,爬文時莫急莫慌,至少先看看鄉民怎麼說再決定要不要抄...
CODE-呼叫命令列程式並即時接收輸出
之前 學過 透過RedirectStandardOutput設定,可在.NET呼叫其他命令列程式並接收其顯示內容的技巧。這回則有額外需求,由於某個命令列轉檔工具執行耗時(可能長達數分鐘),故進行期間會持續輸出進度資訊讓使用者安心,但依以前StandardOutput.ReadToEnd()的做法,.NET呼叫端只能在數分鐘後一次取得全部顯示結果,無法即時掌握處理進度,使用者體驗大大扣分。 研究之後,發現貼心的.NET BCL早有因應對策: OutputDataReceived ! 做法是先在Process...
物件序列化之舉手之勞省空間
分享一下最近學會的序列化壓縮技巧。 情境如下,查詢資料庫後取得List<User>物件,打算透過序列化成檔案的方式保存,方便日後能快速還原回List<User>查詢比對,以達到離線使用的目標。 在.NET要玩序列化不過是小事一樁,只要針對類別建構出DataContractSerializer物件,再搭配FileStream,一個SerializeObject()指令就能將物件儲存成檔案,還原時也只要一個Read()指令就搞定,十分方便。 以下程式模擬了一個20萬筆資料的巨型集合物件...
比NPOI更討喜的Excel元件-EPPlus!
前陣子發表 【潛盾機】將檔案結構匯成Excel文件 ,從網友佑翔的留言(特此感謝),認識了一顆被我錯過的l好元件 -- EPPlus ! NPOI源於 POI ,在很多介面設計上,帶點Java的觀點與風格,雖然能實現各項Excel操作,但函數介面及呼叫步驟,總讓.NET老鳥感覺不順手,就像用筷子吃手扒雞一樣彆扭。例如: 要寫入文字到新的Cell,必須先CreateRow(),再CreateCell(),而不像在Excel VBA透過.Cells(rowIndex, colIndex)一次到位。 LinqToExcel...
更多文章
下一頁 »
搜尋
Go
<
February 2023
>
Sun
Mon
Tue
Wed
Thu
Fri
Sat
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1
2
3
4
5
6
7
8
9
10
11
【廣告】
OrcsWeb: Windows Server Hosting
最新回應
2018-09-20 接手老專案的菜鳥
Windows 停用 TLS 1.0 之配套作業整理
黑大,謝謝您!
2018-09-20 Andy
KO範例6 - 陣列元素的新增/移除事件
Dear 黑暗大 感謝您,已成功將count後的數值寫入資料庫 利用您提供的方法...
2018-09-19 Jeffrey
KO範例6 - 陣列元素的新增/移除事件
to Andy, 如果你 ASP.NET 端是用 PostBack 方式取值,最簡單的做法是將...
2018-09-19 Andy
KO範例6 - 陣列元素的新增/移除事件
Dear 黑暗大 您好 我設計一個網頁,裡面有一些TextBox,其中還有如此範例的動態表格...
2018-09-18 Jeffrey
Windows 停用 TLS 1.0 之配套作業整理
to 接手老專案的菜鳥, support.microsoft.com/.../support...
2018-09-18 接手老專案的菜鳥
Windows 停用 TLS 1.0 之配套作業整理
黑大: 我有個系統是.NET 2.0開發的,如果安裝了.NET 4.5/或者4.6以及ADO...
2018-09-17 Jeffrey
CODE - WebClient 下載檔案自動取得檔名
to Slash, 感謝提醒,程式已修改強化。
2018-09-16 Slash
CODE - WebClient 下載檔案自動取得檔名
雖然與你分享這段小程式的目的不同,但還是要提醒Regex.Split這邊會有RFC5987的問題...
2018-09-06 打雜工程師
ASP.NET Core 值得學嗎?
黑大,我再跟BOSS討論看看,謝謝您^^
2018-09-03 Jeffrey
ASP.NET Core 值得學嗎?
to 打雜工程師, 1) 如果系統上線時程吃緊且不容閃失,用 ASP.NET MVC...
Tags 分類檢視
.NET
.NET Core
AJAX
Android
AngularJS
ASP.NET
ASP.NET MVC
ASP.NET保安
Autofac
Bicycle
C# 4.0
CODE
Coding4Fun
Collections
Community Server
Cordova
CSS
Dapper
Debug
EF
English
Entity Framework
Excel
Hiking
HTML5
IE
IIS
Java
Javascript
jQuery
JSON
KB
Kendo UI
knockoutjs
Life
Linq
Live SDK
Lucene.Net
Mobile
MSDTC
NLog
NuGet
OAuth
Open XML
ORACLE
Performance
PowerShell
Reporting Service
RESTful Web Service
Security
Sharepoint
SignalR
Silverlight
Skype
SQL
SQL 2000
SQL 2005
SQL 2008
SQLite
T4
TechEd
TFS
ThinkPad
Tips
Tools
Trouble-Shooting
TypeScript
Unobtrusive Validation
VBScript
Virus
Vista
Visual Studio
VS Code
VS.NET 2003
VS2005
VS2008
VS2010
VS2012
VS2013
VS2015
VS2017
Vue
WCF
Web
Windows 10
Windows 2008
Windows 2012
Windows 7
Windows 8
Windows Phone
Work
WP7
WPF
中文編碼
慢跑
潛盾機
科學實驗
自動測試
閱讀筆記
風花雪月
關於作者
一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"
有為的中年人
"自許。
文章典藏
September 2018 (5)
August 2018 (12)
July 2018 (8)
June 2018 (6)
May 2018 (19)
April 2018 (14)
March 2018 (10)
February 2018 (10)
January 2018 (14)
December 2017 (22)
November 2017 (12)
October 2017 (16)
September 2017 (9)
August 2017 (13)
July 2017 (16)
June 2017 (17)
May 2017 (9)
April 2017 (13)
March 2017 (15)
February 2017 (14)
January 2017 (12)
December 2016 (8)
November 2016 (11)
October 2016 (15)
September 2016 (11)
August 2016 (19)
July 2016 (16)
June 2016 (14)
May 2016 (20)
April 2016 (13)
March 2016 (15)
February 2016 (11)
January 2016 (16)
December 2015 (12)
November 2015 (15)
October 2015 (14)
September 2015 (25)
August 2015 (16)
July 2015 (13)
June 2015 (11)
May 2015 (12)
April 2015 (15)
March 2015 (17)
February 2015 (9)
January 2015 (12)
December 2014 (12)
November 2014 (15)
October 2014 (12)
September 2014 (22)
August 2014 (16)
July 2014 (17)
June 2014 (18)
May 2014 (11)
April 2014 (10)
March 2014 (14)
February 2014 (14)
January 2014 (4)
December 2013 (12)
November 2013 (11)
October 2013 (13)
September 2013 (15)
August 2013 (12)
July 2013 (13)
June 2013 (16)
May 2013 (20)
April 2013 (22)
March 2013 (15)
February 2013 (9)
January 2013 (10)
December 2012 (14)
November 2012 (10)
October 2012 (12)
September 2012 (30)
August 2012 (16)
July 2012 (17)
June 2012 (18)
May 2012 (9)
April 2012 (15)
March 2012 (12)
February 2012 (8)
January 2012 (6)
December 2011 (9)
November 2011 (11)
October 2011 (15)
September 2011 (15)
August 2011 (18)
July 2011 (24)
June 2011 (31)
May 2011 (16)
April 2011 (13)
March 2011 (13)
February 2011 (11)
January 2011 (15)
December 2010 (18)
November 2010 (12)
October 2010 (10)
September 2010 (18)
August 2010 (19)
July 2010 (22)
June 2010 (20)
May 2010 (19)
April 2010 (19)
March 2010 (24)
February 2010 (14)
January 2010 (24)
December 2009 (13)
November 2009 (14)
October 2009 (27)
September 2009 (20)
August 2009 (18)
July 2009 (18)
June 2009 (22)
May 2009 (14)
April 2009 (19)
March 2009 (17)
February 2009 (25)
January 2009 (16)
December 2008 (23)
November 2008 (20)
October 2008 (19)
September 2008 (21)
August 2008 (10)
July 2008 (16)
June 2008 (20)
May 2008 (20)
April 2008 (21)
March 2008 (18)
February 2008 (9)
January 2008 (18)
December 2007 (20)
November 2007 (22)
October 2007 (20)
September 2007 (23)
August 2007 (22)
July 2007 (19)
June 2007 (27)
May 2007 (22)
April 2007 (23)
March 2007 (23)
February 2007 (17)
January 2007 (9)
December 2006 (12)
November 2006 (15)
October 2006 (7)
September 2006 (9)
August 2006 (16)
July 2006 (14)
June 2006 (12)
May 2006 (12)
April 2006 (9)
March 2006 (4)
February 2006 (7)
January 2006 (8)
October 2005 (1)
August 2005 (1)
July 2005 (1)
June 2005 (2)
February 2005 (2)
January 2005 (5)
February 2004 (2)
January 2004 (13)
其他功能
這個部落格
Home
Syndication
Comments RSS