首先上介面:
再看拆分功能演示:
上**:
usingview codedevcomponents.dotnetbar;
using
npoi.hssf.usermodel;
using
npoi.ss.usermodel;
using
system;
using
system.collections;
using
system.collections.generic;
using
system.componentmodel;
using
system.data;
using
system.data.oledb;
using
system.drawing;
using
system.io;
using
system.linq;
using
system.text;
using
system.windows.forms;
namespace
//////
檔案上傳開啟
/// ///
///private
void buttonx1_click(object
sender, eventargs e)
;if (!((ilist)str).contains(extension))
else
else}}
}//////
匯入載入excel
/// ///
///private
void buttonx2_click(object
sender, eventargs e)
private
int_returnstatus;
private
string
_returnmessage;
//////
執行返回狀態
/// public
intreturnstatus
}//////
執行返回資訊
/// public
string
returnmessage
}//////
讀取匯入excel到dataset
/// ///
///public dataset todatatable(string filepath, string
filename)
//判斷檔案是否被其他程序使用
microsoft.office.interop.excel.workbook workbook;
try
catch
//獲得所有sheet名稱
int n =workbook.worksheets.count;
string sheetset = new
string
[n];
system.collections.arraylist al = new
system.collections.arraylist();
for (int i = 1; i <= n; i++)
//釋放excel相關物件
workbook.close(null, null, null
);
if (workbook != null
)
)
gc.collect();
//把excel匯入到dataset
string connstr = ""
;
string filetype =system.io.path.getextension(filename);
if (string.isnullorempty(filetype)) return
null
;
if (filetype == "
.xls")
else
string sql_f = "
select * from
";//
可更改sheet名稱,比如sheet2,等等
//oledbconnection conn = null;
oledbdataadapter da = null
; datatable dtsheetname = null
; dataset ds = new
dataset();
//初始化連線,並開啟
using (oledbconnection conn = new
oledbconnection(connstr))
);//初始化介面卡
da = new
oledbdataadapter();
for (int i = 0; i < dtsheetname.rows.count; i++)
da.selectcommand = new
oledbcommand(string.format(sql_f, sheetname), conn);
dataset dsitem = new
dataset();
da.fill(dsitem,
"mytable");
ds.tables.add(dsitem.tables[
0].copy());}}
catch
(exception ex)
finally
}return
ds; }
}//////
拆分工資條操作
/// ///
///private
void buttonx3_click(object
sender, eventargs e)
catch
}//////
拆分excel工資條資料
/// ///
public
void
excelsplit(datatable exceltable)
int index = 0; //
拆分個數
//建立內容
irow datarow = sheet.createrow(1
); filestream stream = null
;
if (!directory.exists(@"
d:/salarybill"))
for (int i = 0; i < exceltable.rows.count; i++)
string excelname = exceltable.rows[i]["
姓名"].tostring() + "
_" + datetime.now.tostring("
yyyy-mm
") + "
.xls";
stream = new filestream(@"
d:/salarybill/
" +excelname, filemode.create);
workbook.write(stream);
index++;
}stream.close();
this.toolstripstatuslabel1.text = "
共拆分工資條:
" + index + "
條賬單"
;
this.cursor =cursors.default;}}
}
要引用 npoi.dll
幫公司人事MM做了個工資條拆分工具
偶爾一次午飯時人事說加班加到8點多,純手工複製貼上excel的內容,公司大概150多人吧,每次發工資時都需要這樣手動處理,將乙個excel拆分成150多個excel,再把裡面的內容粘過去,如此迴圈。於是,我寫了個小程式幫人事mm解決。主要是用到了npoi生成excel,根據每條記錄建立乙個excel...
也來感慨一下
有一段時間沒有寫一點東西了。發現乙個問題,這兩三個月來,我有點變賴了,在那個整整忙了乙個月之後。今天,組長找我談話了,大概的意思是說,我最近變賴了。也是,這段時間,他也只顧著自己天天加班,然後我才有時間開點小差什麼的。今天好像他開始比較有空了,沒加班,晚上跟我一起坐車回來。路上,他跟我說,這段時間以...
也來學習一下曾國藩
提起曾國藩,不知大家是否有這麼乙個印象,風雨飄搖,乙個略顯愚鈍的老者,卻扛起了挽救晚清命運的大旗 提起他的生平,經常描述的都是最後一次出山前是乙個人,出山後完全變成了另乙個人。這一點我不是很認同,雖然後面初三後他有了乙個天翻地覆的變化,但是所有的果都是之前種下的因,這肯定也是一步乙個腳印走過來的,只...