Browse by Tags

XLS轉XLSX研究
要在C#讀寫Excel檔,直接呼叫Excel.exe是最直覺功能最齊全的做法,但Excel屬桌面互動程式,透過Web或排程等背景程序執行常有 問題 要克服,同時,只為單純讀取資料招喚龐大笨重的Excel程式有殺雞用牛刀之嫌,第三方元件是更理想的方式。 過去用過多套Excel處理程式庫: NPOI 、 EPPlus 、 OpenXML SDK 、 ClosedXML ,一路下來,ClosedXML支援不少Excel VBA風格的簡潔API,檔案相容性測試又比NPOI及EPPlus好,成為我處理Excel的首選...
Posted 05 August 2016 10:52 PMJeffrey | 1 comment(s) 10,898
Filed under:
Excel CSV輔助工具強化版-支援換行符號
避免Excel開啟CSV時截掉左補零的小工具 是我三年前的作品,用來克服Excel開啟CSV時"00001"會變成"1"的問題。最近網友g提供了一個轉換失敗案例,引發我的興趣,檢查CSV後發現幾項問題: CSV內含日文,使用Shift-JIS編碼(ANSI)而非UTF8,當初將所有ANSI檔案視為BIG5,形成亂碼 部分欄位內容夾帶換行符號(如黃底所示),擾亂原本以"\r\n"分隔資料列的解析邏輯 程式未考慮CSV部分欄位自帶雙引號的情況...
【笨問題】Excel「數值儲存為文字」小筆記
拿到一份資料庫查詢匯出的Excel檔,想加工卻碰了釘子。如下圖,明明是數字,用SUM(A1:A4)加總卻得到0。 全是幻覺,嚇不倒我滴!一切皆因儲存格格式被設成文字。 已知原因,但經驗不足,後續處理不怎麼順利。先試著將儲存格格式改為數值,加上千位號並調小數位數,但因欄位已被認定成文字,不動如山。換一招,複製整欄再用選擇性貼上,試了不同選項,文字就是文字,怎麼都無法變回數字。 【小筆記】一般手動輸入時若想將數字強迫存為文字(最常見情境是電話號碼,遇到通用格式前方的零會被移除),做法是在數字前方加上單引號...
Posted 12 August 2014 09:39 PMJeffrey | 1 comment(s) 78,372
Filed under:
【笨問題】在Excel如何只加總篩選後的結果
剛學會一個非常基本的Excel技巧: Excel篩選功能很好用,但使用SUM()加總永遠都是全部資料的總和,如何只加總篩選後的結果呢? 答案是 -- 使用 SUBTOTAL() 函數!廢話不多說,請看VCR~
Posted 09 August 2014 08:53 AMJeffrey | 6 comment(s) 41,430
Filed under:
同時開啟兩個Excel檔案於多螢幕並列顯示
Excel有個討厭特性,開啟多份Excel檔案時不像Word每個文件一個視窗,而是預設開在同一視窗,每次只能顯示其中一個檔案,如果要左右並陳對照,可以取消個檔案的最大化,在同一個視窗中並列,只是這麼做不能善用多螢幕的優勢,雖然可以將視窗拉大橫跨兩個螢幕,但有螢幕解析不同,以及無法使用快捷鍵調整視窗尺寸位置的問題,用起來不甚順手,還是覺得像Word一樣各自成為獨立視窗操作比較方便。 平日上班使用Excel 2010,有個解決方案不要直接點選Excel澢,而由程式集的Exce捷徑l開啟新l視窗,點選兩次就會產生兩個獨立的Excel視窗...
Posted 15 July 2013 09:52 PMJeffrey | 21 comment(s) 191,376
Filed under: ,
Office自動儲存,我要輕輕為你唱首歌
過去只知道Office的自動儲存功能能在當機時救回部分未儲存內容。最近才發現,連自己手殘誤砍,自動儲存也能讓你少搥幾下心肝。 故事是這樣: 我在Excel編輯資料,由文件末端複製了一大段空白列,準備插入中段後輸入資料,明明該用【插入複製的儲存格】,卻鬼迷心竅按成【貼上】而不自覺,就這麼把幾十行打好的資料給蓋過了。等要插入的資料打完,立刻存檔求心安,接著向下找後半部的資料繼續改... 才發現資料不 見 了!! 趕緊先將後來中段新增資料複製到另一個Excel,再狂按Ctrl+Z想復原到用空白列覆蓋前的狀態...
Posted 05 July 2013 08:04 AMJeffrey | with no comments 11,465
Filed under:
呼叫Excel的程式無法以排程方式執行
某支呼叫Excel的轉檔程式(做法如 前文 所述),直接執行正常,移入Windows 2008排程執行,卻發生錯誤: Task Scheduler successfully completed task "\Run Excel" , instance "{2b987743-dfa2-4883-b7ee-0f26b1534c64}" , action "X:\Temp\RunExcel.exe" with return code 3762504530...
Posted 15 May 2013 08:12 AMJeffrey | 2 comment(s) 27,964
Filed under: ,
透過.NET程式操作Excel的注意事項
【個案】某支開啟Excel進行作業的.NET排程程式,定期排程執行時遇到錯誤,留下一堆無主excel.exe。 用以下程式示範: using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using Microsoft.Office.Interop.Excel;...
Posted 14 May 2013 07:44 AMJeffrey | with no comments 34,634
Filed under: ,
【茶包射手日記】Excel xlsm複製工作表到xls時出現1004錯誤
幫忙修改某個Excel VBA,透過巨集要將xslm的某個工作表(Worksheet)複製到另一個xls活頁簿(Workbook),執行Sheets("TheSheet").Copy Before:=AnothorXLS.Sheets("Boo"),卻出現以下錯誤: 執行階段錯誤 '1004': Excel無法將工作表插入目的地活頁簿,因為它包含的列和欄比來源活頁簿少。若要移動或複製資料至目的地活頁簿,您可以選取資料,然後使用[複製]與[貼上...
Posted 08 May 2013 08:35 PMJeffrey | 1 comment(s) 19,279
Filed under:
關於Excel 1900/1/0的兩三事
活到老學到老! 最近才發現Excel處理空日期的一些行為,沒多加鑽研,僅簡單筆記備忘: 將儲存格設為日期格式,當儲存格無內容,則顯示空白;若輸入0,則會顯示1900/1/0。 若設為日期格式的儲存格是經由"=A2"公式自其他儲存格取值,即使A2無內容,也會出現1900/1/0。 如不希望Excel顯示1900/1/0這種無效日期格式,可使用儲存格自訂格式小密技,寫成"yyyy/MM/dd;;",用兩個分號將格式字串分成三段,第一段適用於正數、第二段適用負數...
Posted 27 April 2013 07:26 AMJeffrey | 2 comment(s) 15,913
Filed under:
令人驚豔的Excel程式庫 - ClosedXML
處理ReportViewer匯出檔的 比武大會 上,NPOI與EPPlus都敗下陣來,Open XML SDK雖然勝出,但在應用呼叫上繁瑣難搞,用起來總覺礙手礙腳。在研究 Open XML SDK設定工作表保護 的過程,發現新大陸 - 另一套Open Source的Excel程式庫, ClosedXML 。 簡單整理ClosedXML特色如下: 程式庫很俏皮地命名為ClosedXML,事實它高度依賴Open XML SDK,在引用時,程式必須一併參考DocumentFormat.OpenXml.dll...
Posted 28 December 2012 08:38 AMJeffrey | 15 comment(s) 60,636
Filed under: ,
使用Open XML SDK保護工作表不被修改
在先前 測試 中,Open XML SDK是唯一挑戰ReportViewer匯出Excel檔修改成功的程式庫,手邊的下一步需求是要將工作表(Worksheet)設為不可修改。 在Open XML SDK中,有個 SheetProtection 類別,將其加入xlsx的XML結構,就可向應用程式宣告該工作表允許或禁止的操作,例如: 刪除欄(deleteColumns)、重設儲存格格式(formatCells)、插入列(insertRow)... 等等。在SheetProctection設定可以指定解除鎖定的密碼雜湊值...
Posted 28 December 2012 06:03 AMJeffrey | with no comments 9,284
Filed under: , ,
【茶包射手日記】EPPlus無法開啟ReportViewer匯出xlsx檔
使用EPPlus 3.1.2開啟RDLC匯出的xlsx檔,讀取ExcelPackage.Workbook.Worksheets時發生錯誤: System.ArgumentNullException: Value cannot be null. Parameter name: String 既然EPPlus是Open Source,照慣例 -- " Use the Source, Luke! " 追進原始碼,找到案發現場 -- ExcelWorksheet.cs LoadColumns...
Posted 07 December 2012 08:56 PMJeffrey | with no comments 9,132
Filed under: ,
【茶包射手日記】EPPlus 3.1.2 Bug Fixing
發現EPPlus 3.1.2版Bug一枚。 開啟現有xlsx後,不做任何修改就儲存,再使用Excel開啟會出錯。例如以下範例: using (ExcelPackage p = new ExcelPackage(new FileInfo("通訊錄.xlsx"))) {      p.Save(); } 程式執行後使用Excel開啟重新儲存的通訊錄.xlsx檔案,會出現以下錯誤: Excel 在 '通訊錄.xlsx' 中找到無法讀取的內容...
Posted 05 December 2012 09:06 PMJeffrey | with no comments 16,482
Filed under: , ,
【潛盾機】將檔案結構匯成Excel文件
看圖說故事好了。有個存放專案檔案的資料夾: 因專案管理要求,需匯出依資料夾層級縮排的Excel文件樣式如下,方便填寫目錄或檔案說明: 其中還有一點小要求是希望能彈性地略過某些目錄、檔案,例如: obj目錄。覺得這是個很好的NPOI練習題材,於是我寫了以下的小工具: namespace DumpWebTree { using System; using System.Collections.Generic; using System.Linq; using System.Text; using System...
Posted 02 May 2012 06:22 AMJeffrey | 5 comment(s) 20,753
Filed under: ,
更多文章 下一頁 »

搜尋

Go

<March 2023>
SunMonTueWedThuFriSat
2627281234
567891011
12131415161718
19202122232425
2627282930311
2345678
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication