參考:http://no2don.blogspot.com/2013/02/c-nopi-excel-xls.html

下載NPOI的dll,放到專案 (共五個dll)

using NPOI.XSSF.UserModel;
using NPOI.SS.UserModel;

//建立 Workbook
XSSFWorkbook wb = new XSSFWorkbook();

//建立一個叫做"Sheet1"的 Sheet
XSSFSheet st = (XSSFSheet)wb.CreateSheet("Sheet1");

//生成一個新Row (第一列:0, 第二列:1, ...類推)
int row_index = 0;
st.CreateRow(row_index);
//生成這個Row的Cell, 且放值進去 (第一格:0, 第二格:1, ...類推)
st.GetRow(row_index).CreateCell(0, CellType.String).SetCellValue("內容值"); //A1
st.GetRow(row_index).CreateCell(1, CellType.String).SetCellValue("內容值"); //B1

//再生成一個新Row
st.CreateRow(++row_index);
//生成這個Row的Cell, 且放值進去
st.GetRow(row_index).CreateCell(0, CellType.String).SetCellValue("內容值"); //A2
st.GetRow(row_index).CreateCell(1, CellType.String).SetCellValue("內容值"); //B2

//寫入
var file = new FileStream("檔案路徑\\檔案名稱.xlsx", FileMode.Create);
wb.Write(file);
file.Close();

//關閉 Workbook
wb = null;

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

工作上突然有一個遞迴的需求

需求並不複雜, 用程式就能簡簡單單的寫完

但是SQL語法非常不熟練的我, 突然想說 來練練SQL語法好了 (加上懶得再改程式...)

所以就來研究了一下SQL的遞迴寫法

 

<範例>

有一個資料表: [員工資料表]

欄位很簡單: [主管], [員工]

[主管]欄位是NULL的[員工], 代表沒有人管他, 就是大主管的意思

需求是: 當輸入一個員工姓名, 要把該員工下面所有階層的員工都Show出來

 

SQL語法:

WITH [員工資料表new] AS (
 --找出 [主管] 為 某人 或 NULL 的資料當作 依據
 SELECT [主管], [員工]
 FROM [員工資料表]
 WHERE [主管] = '郭董' --NULL
 
 UNION ALL
 
 --之後以 上面查出的結果 為依據遞迴查詢
 SELECT e.[主管], e.[員工]
 FROM [員工資料表] e
 INNER JOIN [員工資料表new] ecte ON ecte.[員工] = e.[主管]
)
SELECT *
FROM [員工資料表new]

 

實際上工作的需求:

輸入一成品ID, 帶出該產品所需使用的全部材料.

因為材料本身也可能是成品(Type=A或F), 那就要針對是成品的材料再遞迴找出它的材料是什麼, 依此遞迴下去..

DECLARE @APART nvarchar(20) = 'ABC1234567890'

;WITH [MY_BOM] AS (

SELECT b.[APart]
    , b.[Part]
    , p.[Type]
FROM [BOM] b
INNER JOIN [Material] p ON b.[Part] = p.[Part]
WHERE b.[APart]=@APART 

UNION ALL

SELECT bom.[APart]
    , bom.[Part]
    , part.[Type]
FROM [BOM] bom
INNER JOIN [Material] part ON bom.[Part] = part.[Part]
INNER JOIN [MY_BOM] ecte ON ecte.[Part] = bom.[APart] AND (ecte.[Type]='A' OR ecte.[Type]='F')
)
SELECT * FROM [MY_BOM] WHERE [Type]!='A' AND [Type]!='F';

 

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





















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

高雄市 中低收入老人生活津貼

申請資格與內容
1. 年滿65歲設籍並實際居住本市,且最近一年居住國內超過183日之市民。
2. 未接受政府其他生活補助亦未經收容安置者。
3. 家庭總收入平均每人每月未超過當年度最低生活費(104年度為12,485元)2.5倍,且未超過台灣地區平均每人每月消費性支出之1.5倍(29,124元)。
4. 全家人口存款(含投資)未超過一人時為新臺幣250萬元,每增加一人增加新台幣25萬元
5. 全家人口之土地及房屋價值合計未超過650萬元。
(1)未達最低生活費標準1.5倍(18,728元)者,每人每月核發7,200元。
(2)達最低生活費標準1.5倍(18,728元)且未超過台灣地區平均每人每月消費支出2.5倍(29,124元),每人每月核發3,600元。

應備文件
(1)全家戶籍相關資料
(2)國稅局出具之所得暨財產證明及稅籍資料等文件
(3)申請人私章
(4)郵局存簿封面影本

服務單位
戶籍地區公所社會(經)課
社會局社會救助科:337-3372~5


※注意事相:

有領取中低收入老人生活津貼,國民年金的老年年金不得擇優計算。

申請中低收入戶老人生活津貼時,國民年金的老年年金需視為其他收入,計算於所得內。





高雄市 中低收入戶

補助條件
一、需設籍並實際居住本市本市市民。
二、家庭總收入未超過全家最低生活費1.5倍(每人每月不得超過18,728元)。
三、動產(含存款、有價值劵及其他投資)額度:全家人口4口以內(含4口)之家庭,存款本金不超過新台幣45萬元整 ;逾4口者,每增加1口增加11.25萬元。
四、不動產:全家人口之土地公告現值及房屋評定標準價格合計不超過新台幣530萬元。

補助項目
一、未滿18歲兒童及少年全民健保應自付保險費全額補助。
二、18歲以上民眾全民健保應自付保險費補助50% 。
三、就讀國內高中(職)以上就學學雜費減免30%。

應備文件
一、申請人身分證、印章。
二、全家戶口名簿影本或戶籍謄本。
三、國稅局出具之財產、所得及稅籍資料清單等文件。
四、其他證明如醫院診斷證明書、學生證、身心障礙手冊等。

服務單位、洽詢電話
戶籍地區公所社會(經)課、里辦公處。
戶籍地社福中心。
社會局社會救助科:3368333轉2458-2460 ;3373373,3373375。

備註
一、符合中低收入戶資格,由社會局按月主動申報給健保局,民眾不需再行提出健保費用減免申請。
二、就學減免請洽就讀學校辦理減免相關事宜。


※注意事相:

申請中、低收入戶時須計算申請人配偶、一親等直系血親(也就是父母與子女)、同一戶籍或共同生活之其他直系血親(如:祖父母、孫子女等)及認列綜合所得稅扶養親屬免稅額之納稅義務人。以法規的定義來看,申請人的父母與子女無論是否與申請人同住或是同戶籍仍會計算收入與財產狀況。

我是單親家庭的家長,前配偶都沒有協助我照顧小孩,是不是可以不用計算前配偶的財產狀況?
若您有遇到這樣的狀況,務必於申請時向受理單位告知,經評估符合社會救助法第5條第3項第4款「未與單親家庭未成年子女共同生活、無扶養事實,且未行使、負擔其對未成年子女權利義務之父或母」資格者,可排除前配偶收入與財產的計算,未成年子女指的是未滿20歲。





列入收入計算的限制:


<人口列計範圍>

列冊人口一等親直系血親皆要列入計算,包括:

(一)申請人本人。

(二)配偶。

(三)一親直系血親,包括父母、子女。(不同住也需列入)

(四)同一戶籍或共同生活之其他直系血親(祖父母、孫子女、外孫子女)。

(五)認列綜合所得稅扶養親屬免稅額之納稅義務人(若申請人,有被家人被報扶養,亦要計算報扶養之納稅義務人) 。


<不列入應計算人口範圍>

(一)尚未設有戶籍的非本國籍配偶或大陸地區配偶。

(二)未共同生活且無扶養事實的特定境遇單親家庭中的父親或母親、祖父母或外祖父母。

(三)未共同生活且無扶養能力的已婚子女、孫子女或外孫子女。

(四)未與單親家庭未成年子女共同生活、無扶養事實,且未行使、負擔其對未成年子女權利義務的父親或母親。

(五)應徵集召集入營服兵役或替代役現役。

(六)在學領有公費。

(七)入獄服刑、因案羈押或依法拘禁。

(八)失蹤,經向警察機關報案協尋未獲,達6個月以上。

(九)因其他情形特殊,未履行扶養義務,致申請人生活陷於困境,經地方主管機關訪視評估以申請人最佳利益考量,認定以不列入應計算人口為宜。

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

本文轉貼自 : http://bigone2000.pixnet.net/blog/post/56194164-%E4%B8%80%E4%BA%9B%E5%B8%B8%E8%A6%8B%E7%9A%84sql%E6%95%88%E8%83%BD%E5%95%8F%E9%A1%8C

1.  對查詢進行優化,應儘量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。

2.  應儘量避免在 where 子句中對欄位進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃描,如:
   select id from t where num is null
   可以在num上設置預設值0,確保表中num列沒有null值,然後這樣查詢:
   select id from t where num=0

3.  應儘量避免在 where 子句中使用!=或<>操作符,否則將使引擎放棄使用索引而進行全表掃描。

4.  應儘量避免在 where 子句中使用 or 來連接條件,否則將導致引擎放棄使用索引而進行全表掃描,如:
     select id from t where num=10 or num=20
     可以這樣查詢:
     select id from t where num=10
     union all
     select id from t where num=20

5.  in 和 not in 也要慎用,否則會導致全表掃描,如:
     select id from t where num in(1,2,3)
     對於連續的數值,能用 between 就不要用 in 了:
     select id from t where num between 1 and 3

6.  下面的查詢也將導致全表掃描:
      select id from t where name like 'abc' 
      若要提高效率,可以考慮全文檢索。

7.  應儘量避免在 where 子句中對欄位進行運算式操作,這將導致引擎放棄使用索引而進行全表掃描。如:
     select id from t where num/2=100
     應改為:  
     select id from t where num=100*2

8.  應儘量避免在where子句中對欄位進行函數操作,這將導致引擎放棄使用索引而進行全表掃描。如:
     select id from t where substring(name,1,3)='abc'--name以abc開頭的id
     select id from t where datediff(day,createdate,'2005-11-30')=0--‘2005-11-30’生成的id應改為:
     select id from t where name like 'abc'
     select id from t where createdate>='2005-11-30' and createdate<'2005-12-1'

9.  不要在 where 子句中的“=”左邊進行函數、算術運算或其他運算式運算,否則系統將可能無法正確使用索引。

10.  在使用索引欄位作為條件時,如果該索引是複合索引,那麼必須使用到該索引中的第一個欄位作為條件時才能保證系統使用該索引,否則該索引將不會被使用,且應盡可能的讓欄位順序與索引順序一致。

11.  很多時候用 exists 代替 in 是一個好的選擇:
       select num from a where num in(select num from b) 
       用下面的語句替換:
       select num from a where exists(select 1 from b where num=a.num)

12.  並不是所有索引對查詢都有效,SQL是根據表中資料來進行查詢優化的,當索引列有大量資料重複時,SQL查詢可能不會去利用索引,如一表中有欄位sex,male、female幾乎各一半,那麼
      即使在sex上建了索引也對查詢效率起不了作用。

13.  索引並不是越多越好,索引固然可以提高相應的 select 的效率,但同時也降低了 insert 及 update 的效率,因為 insert 或 update 時有可能會重建索引,所以怎樣建索引需要慎重考慮,
      視具體情況而定。一個表的索引數最好不要超過6個,若太多則應考慮一些不常使用到的列上建的索引是否有 必要。

14.  應盡可能的避免更新 clustered 索引資料列,因為 clustered 索引資料列的順序就是表記錄的物理存儲順序,一旦該列值改變將導致整個表記錄的順序的調整,會耗費相當大的資源。若應
      用系統需要頻繁更新 clustered 索引資料列,那麼需要考慮是否應將該索引建為 clustered 索引。

15.  儘量使用數字型欄位,若只含數值資訊的欄位儘量不要設計為字元型,這會降低查詢和連接的性能,並會增加存儲開銷。這是因為引擎在處理查詢和連接時會逐個比較字串中每一個字元,而
      對於數字型而言只需要比較一次就夠了。

16.  盡可能的使用 varchar/nvarchar 代替 char/nchar ,因為首先變長欄位存儲空間小,可以節省存儲空間,其次對於查詢來說,在一個相對較小的欄位內搜索效率顯然要高些。

17.  盡量不要用 select * from t ,用具體的欄位列表代替“*”,不要返回用不到的任何欄位。

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