using System.Runtime.InteropServices;

[DllImport("kernel32", CharSet = CharSet.Auto, SetLastError = true)]
private static extern int LCMapString(int locale, int dwMapFlags, string lpSrcStr, int cchSrc,
									  [Out] string lpDestStr, int cchDest);

public static string ToSimplified(string argSource)
{
	var t = new String(' ', argSource.Length);
	LCMapString(LocaleSystemDefault, LcmapSimplifiedChinese, argSource, argSource.Length, t, argSource.Length);
	return t;
}

public static string ToTraditional(string argSource)
{
	var t = new String(' ', argSource.Length);
	LCMapString(LocaleSystemDefault, LcmapTraditionalChinese, argSource, argSource.Length, t, argSource.Length);
	return t;
}

伊 發表在 痞客邦 留言(0) 人氣()

Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkBook = xlApp.Workbooks.Add(misValue); //Create new Excel
Excel.Worksheet xlWorkSheet= (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); //取第一個Sheet

//指定列高, Object的高度約55像素, 這裡用第3列為範例
((Excel.Range)xlWorkSheet.Rows["3:3", System.Type.Missing]).RowHeight = 55;

//取得位置, 這裡用H3為範例
Excel.Range ColH = xlWorkSheet.get_Range("H3");

//Add OLE Object
xlWorkSheet.Shapes.AddOLEObject(ClassType: Type.Missing
	, Filename: Directory.GetCurrentDirectory() + "\\PDF檔案名稱.pdf"
	, Link: false
	, DisplayAsIcon: true
	, IconFileName: Directory.GetCurrentDirectory() + "\\PDF的Icon檔案名稱.ico"
	, IconIndex: "0"
	, IconLabel: "這裡可以寫字"
	, Left: ColH.Left //放 OLE Object 的位置
	, Top: ColH.Top //放 OLE Object 的位置
	//, Width: 15 //有設定Icon時, Width/Height的設定貌似無效
	//, Height: 15 //有設定Icon時, Width/Height的設定貌似無效
);

//xlWorkSheet.Cells.EntireRow.AutoFit(); //自動列高, 因為有指定列高, 這邊不設定自動
xlWorkSheet.Cells.EntireColumn.AutoFit(); //自動欄寬

//另存新檔
xlWorkBook.SaveAs(@"存檔路徑 \\172.16.0.11\Report\", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);

//關閉
xlWorkBook.Close(true, misValue, misValue);
xlApp.DisplayAlerts = false;
xlApp.Quit();

//釋放
releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);


private void releaseObject(object obj)
{
	try
	{
		System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
		obj = null;
	}
	catch (Exception ex)
	{
		obj = null;
		Console.WriteLine("Unable to release the Object " + ex.ToString());
	}
	finally
	{
		GC.Collect();
	}
}
文章標籤

伊 發表在 痞客邦 留言(0) 人氣()

Xml File 內容 :

<?xml version="1.0" standalone="yes"?>
<table1>
    <Name>Alice</Name>
    <Mail>alice@mail.com</Mail>
    <Address>No. 19-1, Industry E. Road  IV, Hsinchu Science Park, Hsinchu 30077, Taiwan</Address>
</table1>

C# 內容 :

定義的Class

public class ClassA
{
    public string Name { get; set; }
    public string Mail { get; set; }
    public string Address { get; set; }
    public string table1_Id { get; set; }
}

轉換程式碼 :

XDocument xDoc = XDocument.Load(XmlFilePath);

IEnumerable<ClassA> table1=
    (from s in xDoc.Descendants("table1")
     select new ClassA()
     {
         Name = s.Element("Name") != null ? s.Element("Name").Value : null,
         Mail = s.Element("Mail") != null ? s.Element("Mail").Value : null,
         Address = s.Element("Address") != null ? s.Element("Address").Value : null,
     }).ToList();

 

結果 :

XmlToClassList.png

伊 發表在 痞客邦 留言(0) 人氣()

一直很猶豫要不要寫這篇文章來記錄使用心得 (因為是大雷)

但為了自己回憶方便, 還是稍微寫一篇簡短的心得吧~

 

會購買這支產品, 是因為本身肌膚非常的不吃妝, 有色的 防曬 / 粉底 / BB霜 / CC霜...等, 擦上去都會浮粉浮的很恐怖.

很認真的上網爬文, 發現到處都大推這支產品, 而且網路上也很少有人表示 使用過敏 / 爆痘 / 爆粉刺.

我觀望了一陣子, 也在網拍猶豫了一陣子, 最後決定直接到專櫃諮詢+購買, 覺得有專櫃人員的推薦會更安心一點嘛~

 

到了專櫃, 人員直接讓我試擦喚顏凝露, 並且也幫我上了粉底+粉餅, 讓我感受妝感.

我還蠻推薦他們專櫃人員的服務!

試擦後, 妝感看起來OK(雖沒有很貼, 但是跟平常浮粉的狀態比起來, 好很多了), 喚顏凝露擦的當下也無刺痛不適的感覺, 所以我就買回家了.

買回家後隔天是星期一上班日, 迫不及待的就開封使用了~~~

買後第1天, 擦了喚顏凝露後, 人中的地方會覺得熱熱的, 後續粉感好像真的比較不明顯了, 但晚上回家卸妝發現有長了2顆痘痘 1顆粉刺. 我已經很久沒有長這些東西了~

買後第2天, 一樣擦了去上班, 但晚上回家卸妝發現, 原本的2顆痘痘變大了, 原本的1顆粉刺也變成痘痘的感覺, 而且還額外多長了1顆痘痘 2顆粉刺. 因為怕是喚顏凝露造成, 立即停用.

買後第3~5天, 沒擦喚顏凝露, 晚上回家洗臉, 痘痘及粉刺都有改善緩和的跡象, 並且在第5天幾乎都不見了.

買後第6天, 發揮實驗精神, 又拿來使用, 但晚上回家卸妝後, 又發現長了新的痘痘粉刺...

買後第7~10天, 沒擦喚顏凝露, 痘痘及粉刺慢慢消失.

買後第11天, 繼續實驗精神, 再用, 晚上回家卸妝又發現長了新的痘痘粉刺...

買後第12天, 再繼續實驗精神, 再用! 晚上回家卸妝發現長了更多的痘痘粉刺...

買後第13天後, 停用喚顏凝露...

 

我肌膚的反應比較像是過敏. 

因為痘痘粉刺不是擦一兩天就會長出來的東西, 是需要累積發酵的.

會這麼立即的長出貌似痘痘粉刺的東西, 我是把它們歸類為過敏的疹子.

內心是感覺很可惜沒辦法繼續使用. (扼腕)

 

最後還是推薦他們專櫃的服務~

 

伊 發表在 痞客邦 留言(0) 人氣()

功能說明 : 避免程式被不小心關閉(按右上角的[X]會縮小, 不會關閉), 不要佔用下方工具列, 縮小到系統匣, 縮小時右下角出現提示訊息.

其他功能說明 : 複製指定檔案, 指定來源及目的路徑, 會遞迴往下尋找資料夾, 目的路徑自動複製來源資料夾的結構.

 

config : 指定檔案, 指定來源及目的路徑.

config1.png

執行畫面

run0.png

按[X]縮小到系統匣.

run1.png

要關閉程式需在系統匣圖示按右鍵, 點[Exit]離開.

run2.png

 

1. 先拉Layout

Layout.png

NotifyIcon : notifyIcon1 系統匣圖示

    *Text一定要設定, 否則縮小到系統匣會看不到. 指定系統匣用的選單.

    notifyIcon1-1.png

ContextMenuStrip : contextMenuStrip1 系統匣選單

    contextMenuStrip1.png

TextBox : textBox1 用來顯示訊息

    textBox1.png

BackgroundWorker : backgroundWorker1 使用背景作業複製檔案, 避免視窗凍結

    *設定 : 可以即時回報訊息, 可以取消背景作業.

    backgroundWorker1-1.png

Timer : timer1 計時器, 才能每隔一段時間執行檔案複製

    timer1-1.png

 

2. 用到的事件

NotifyIcon : notifyIcon1 系統匣圖示

    *單擊 跟 雙擊 圖示, 都可開啟畫面.

    notifyIcon1-2.png

    notifyIcon1-3.png

ToolStripMenuItem : exitToolStripMenuItem 系統匣選單項目

    *因為按[X]不能關閉程式, 所以系統匣提供選單[Exit]讓使用者關閉程式.

    exitToolStripMenuItem3.png

    exitToolStripMenuItem4.png

BackgroundWorker : backgroundWorker1 背景作業

    *指定各個背景作業事件, 因為要能夠回報訊息, 所以有宣告一個全域變數msg存訊息.

    *DoWork裡面不能變動到外部元件(例如寫 TextBox.Text="xxx" 這樣是不行的).

    backgroundWorker1-2.png

    backgroundWorker1-3.png

    backgroundWorker1-4.png

    backgroundWorker1-5.png

Timer : timer1 計時器

    timer1-2.png

    timer1-3.png

Form : 

    *攔截關閉事件, 判斷是要關閉還是要最小化到系統匣.

    *這裡是用 this.WindowState != FormWindowState.Minimized 來判斷. 當視窗不是最小化的時候, 就取消關閉Form事件, 并顯示系統匣圖示.

    Form.png

    FormClosing.png

Others :

    宣告一個全域變數msg存訊息.

    Start.png

    ShowForm.png

    GetFilePathList1.png

    CreatePath1.png

    todo1.png

    todo2.png

 

伊 發表在 痞客邦 留言(0) 人氣()