版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
jsp表格導(dǎo)出到EXCEL優(yōu)質(zhì)資料(可以直接使用,可編輯優(yōu)質(zhì)資料,歡迎下載)
如何把JSP頁面導(dǎo)出到Excel中?jsp表格導(dǎo)出到EXCEL優(yōu)質(zhì)資料(可以直接使用,可編輯優(yōu)質(zhì)資料,歡迎下載)標(biāo)簽:
excel協(xié)議jsp2021-02-2611:52
5277人閱讀
評論(5)
收藏
\o"舉報"舉報
分類:05.Java(15)
目錄(?)[+]在此,強(qiáng)調(diào)一下搜索時關(guān)鍵詞的重要性,這樣一下子可以定位到文章,否則處于盲人摸象,毫無目的尷尬境地。本篇就是通過exportjsptoexcel找到的。原文地址:HowtoExportWebPagetoExcel(inJSP)?本篇教程我們會看到如何把JSP頁面導(dǎo)出到Excel中,會在已有的JSP頁面中增加導(dǎo)出excel的功能。許多時候?qū)τ谟脩魜碚f,可以在excel中看到頁面內(nèi)容是很方便的。公共的方案會被導(dǎo)出成包含一些報告、數(shù)字等信息的表格。通過導(dǎo)出數(shù)據(jù)導(dǎo)出到excel中,最終用戶也可以使用excel來做各種的分析,這一點(diǎn)對于你的java基本程序來實(shí)現(xiàn),是有困難的。假設(shè)這就是你的jsp頁面:這是對應(yīng)的jsp源碼(導(dǎo)出excel功能還沒有加)。一個包含簡單數(shù)據(jù)表格的jsp頁面。[java]
viewplain
copy
print?<%@
page
language="java"
contentType="text/html;
charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
HTML
4.01
Transitional//EN"
":///TR/html4/loose.dtd">
<html>
<head>
<meta
-equiv="Content-Type"
content="text/html;
charset=ISO-8859-1">
<title>Export
to
Excel
-
Demo</title>
</head>
<body>
<table
align="center"
border="2">
<thead>
<tr
bgcolor="lightgreen">
<th>Sr.
No.</th>
<th>Text
Data</th>
<th>Number
Data</th>
</tr>
</thead>
<tbody>
<%
for
(int
i
=
0;
i
<
10;
i++)
{
%>
<tr
bgcolor="lightblue">
<td
align="center"><%=i%></td>
<td
align="center">This
is
text
data
<%=i%></td>
<td
align="center"><%=i
*
i%></td>
</tr>
<%
}
%>
</tbody>
</table>
</body>
</html>
我們會添加一個“導(dǎo)出到excel”的超鏈接,它會把頁面內(nèi)容導(dǎo)出到excel文件中。那么這個頁面會變成這個樣子:下面是新版本的jsp源碼。這個版本增加了“導(dǎo)出到excel”超鏈接,而且增加了相應(yīng)的功能:[java]
viewplain
copy
print?<%@
page
language="java"
contentType="text/html;
charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
HTML
4.01
Transitional//EN"
":///TR/html4/loose.dtd">
<html>
<head>
<meta
-equiv="Content-Type"
content="text/html;
charset=ISO-8859-1">
<title>Export
to
Excel
-
Demo</title>
</head>
<body>
<%
String
exportToExcel
=
request.getParameter("exportToExcel");
if
(exportToExcel
!=
null
&&
exportToExcel.toString().equalsIgnoreCase("YES"))
{
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition",
"inline;
filename="
+
"excel.xls");
}
%>
<table
align="left"
border="2">
<thead>
<tr
bgcolor="lightgreen">
<th>Sr.
No.</th>
<th>Text
Data</th>
<th>Number
Data</th>
</tr>
</thead>
<tbody>
<%
for
(int
i
=
0;
i
<
10;
i++)
{
%>
<tr
bgcolor="lightblue">
<td
align="center"><%=i
+
1%></td>
<td
align="center">This
is
text
data
<%=i%></td>
<td
align="center"><%=i
*
i%></td>
</tr>
<%
}
%>
</tbody>
</table>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<%
if
(exportToExcel
==
null)
{
%>
<a
href="excel.jsp?exportToExcel=YES">Export
to
Excel</a>
<%
}
%>
</body>
</html>
導(dǎo)出網(wǎng)頁到excel代碼解釋:1)在這個版本的jsp頁面中,當(dāng)你點(diǎn)擊“導(dǎo)出到excel”超鏈接的時候,請求會發(fā)送到相同的頁面(excel.jsp),但是伴隨url參數(shù)是exportToExcel=YES.[java]
viewplain
copy
print?<a
href="excel.jsp?exportToExcel=YES">Export
to
Excel</a>
2)JSP頁面一開始會檢查參數(shù)的正確性。如果這個參數(shù)值是YES的話,我們就會看到響應(yīng)報文中的內(nèi)容類型,它標(biāo)識了excel的文件名,并且會在用戶的電腦上打開。[java]
viewplain
copy
print?String
exportToExcel
=
request.getParameter("exportToExcel");
if
(exportToExcel
!=
null
&&
exportToExcel.toString().equalsIgnoreCase("YES"))
{
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition",
"inline;
filename="
+
"excel.xls");
}
3)當(dāng)你點(diǎn)擊“導(dǎo)出到excel”超鏈接的時候,所有頁面的內(nèi)容會被導(dǎo)出excel中。但是,我們可能不想讓“導(dǎo)出到excel”的超鏈接出現(xiàn)在excel中。為了阻止它的出現(xiàn),我們增加了一個判斷條件,判斷exportToExcel參數(shù)是否出現(xiàn)。如果出現(xiàn),就意味著內(nèi)容會被導(dǎo)出到excel中,而且不包括超鏈接。反之,就意味著我們只是想瀏覽器顯示網(wǎng)頁,那么超鏈接會出現(xiàn)在頁面上。[java]
viewplain
copy
print?<%
if
(exportToExcel
==
null)
{
%>
<a
href="excel.jsp?exportToExcel=YES">Export
to
Excel</a>
<%
}
%>
導(dǎo)出頁面到excel的顯示但你點(diǎn)擊超鏈接,會彈出一個對話框,問你是否打開或保存文件。點(diǎn)擊打開,你會看到下面的內(nèi)容:正如你所看得,導(dǎo)出的文件也會保存你在頁面上的格式設(shè)置。在下一篇教程中,我們會看到如何導(dǎo)出頁面到word文件中HowtoExportWebPagetoWord(inJSP)你可以下載本次教程中代碼解釋部分的eclipse工程文件。JavaExcelExport.zip(5KB)[完]=============================================注意:如果沒有設(shè)置:response.setHeader("Content-Disposition","attachment;filename="+filename+".xls");則默認(rèn)為當(dāng)前頁面.xls。比如testexcel.jsp>則生成testexcel.xls表格擴(kuò)展閱讀:[1]在JSP中通過協(xié)議生成excel和word:作者用過jxl之后,選擇了方式生成excel[2]JSP-EXCELsavedefualtin.xlsextension,openexcelwithinthebrowser:[3]利用協(xié)議,更改輸出文件:引出了1.1協(xié)議的重要性[4]超文本傳輸協(xié)議-(修訂版):詳細(xì)解釋了1.1協(xié)議[5]Multipletablesdataexportedtomultipleworksheetsofthesameexcelsheetinjava:一個excel中,存儲在多個sheet用EXCEL制作一份萬年歷今天我們介紹用Excel制作萬年歷的方法。這個萬年歷可以顯示當(dāng)月的月歷,還可以隨意查閱任何日期所屬的月歷,非常方便。如果你愿意,還可以讓它在特殊的日子里顯示不同的提醒文字,一起來試試吧!本文所涉及到的函數(shù)有:1、AND(logical1,logical2,...)2、DATE(year,month,day)3、DAY(serial_number)4、IF(Logical,Value_if_true,Value_if_false)5、INT(number)6、MONTH(serial_number)7、NOW()8、OR(logical1,logical2,...)1、啟動EXCEL2003,新建一個工作表,取名保存(如萬年歷.xls),并在相應(yīng)的單元格中,輸入如圖1所示的文本。2、同時選中B1、C1、D1單元格,按“格式”工具欄上的“合并及居中”按鈕,將其合并成一個單元格,并輸入公式:=TODAY()。選中B1(合并后的)單元格,執(zhí)行“格式→單元格”命令,打開“單元格格式”對話框(如圖2),在“數(shù)字”標(biāo)簽中的“分類”下面選中“日期”選項,再在右側(cè)“類型”下面選中“二○○一年三月十四日”選項,“確定”退出,將日期設(shè)置成中文形式。注意:TODAY()函數(shù)用于提取當(dāng)前系統(tǒng)日期,請將系統(tǒng)日期一定要調(diào)整準(zhǔn)確喲。3、選中F1單元格,輸入公式:=IF(WEEKDAY(B1,2)=7,"日",WEEKDAY(B1,2));選中H1單元格,輸入公式:=NOW()。選中F1單元格,打開“單元格格式”對話框,在“數(shù)字”標(biāo)簽中的“分類”下面選中“特殊”選項,再在右側(cè)“類型”下面選中“中文小寫數(shù)字”選項,“確定”退出,將“星期數(shù)”設(shè)置成中文小寫形式;選中H1單元格,打開“單元格格式”對話框,在“數(shù)字”標(biāo)簽中的“分類”下面選中“時間”選項,再在右側(cè)“類型”下面選中一款時間格式,“確定”退出。注意:①上述前面一個公式的含義是:如果(IF)當(dāng)前日期(B1)是星期“7”(WEEKDAY(B1,2)=7),則在F1單元格中顯示“日”,否則,直接顯示出星期的數(shù)值(WEEKDAY(B1,2))。②上述第二個函數(shù)(NOW())用于提取當(dāng)前系統(tǒng)日期和時間,也請將系統(tǒng)日期和時間調(diào)整準(zhǔn)確。4、在I1、I2單元格分別輸入1900、1901,然后同時選中I1、I2單元格,用“填充柄”向下拖拉至I151單元格,輸入1900—2050年份序列。同樣的方法,在J1至J12單元格中輸入1—12月份序列。5、選中D13單元格,執(zhí)行“數(shù)據(jù)→有效性”命令,打開“數(shù)據(jù)有效性”對話框(如圖3),按“允許”右側(cè)的下拉按鈕,選中“序列”選項,在“來源”下面的方框輸入:=$I$1:$I$151,“確定”退出。同樣的操作,將F15單元格數(shù)據(jù)有效性設(shè)置為“=$J$1:$J$12”序列。注意:經(jīng)過這樣的設(shè)置以后,當(dāng)我們選中D15(或F15)單元格時,在單元格右側(cè)出現(xiàn)一個下拉按鈕,按此下拉按鈕,即可選擇年份(或月份)數(shù)值,快速輸入需要查詢的年、月值。6、選中A2單元格(不一定非得是A2喲),輸入公式:=IF(F13=2,IF(OR(D13/400=INT(D13/400),AND(D13/4=INT(D13/4),D13/100<>INT(D13/100))),29,28),IF(OR(F13=4,F13=6,F13=9,F13=11),30,31)),用于獲取查詢“月份”所對應(yīng)的天數(shù)(28、29、30、31)。注意:上述函數(shù)的含義是:如果查詢“月份”為“2月”(F13=2)時,并且“年份”數(shù)能被400整除[D13/400=INT(D13/400)],或者(OR)“年份”能被4整除,但不能被100整除[AND(D13/4=INT(D13/4),D13/100<>INT(D13/100))],則該月為29天(也就是我們通常所說的“閏年”),否則為28天。如果“月份”不是2月,但是“4、6、9、11”月,則該月為30天。其他月份天數(shù)為31天。7、選中B2單元格,輸入公式:=IF(WEEKDAY(DATE($D$13,$F$13,1),2)=B3,1,0)。再次選中B2單元格,用“填充柄”將上述公式復(fù)制到C2—H2單元格中。注意:①上述B2公式的含義是:如果“查詢年月”的第1天是星期“7”(WEEKDAY(DATE)($D$13,$F$13,1),2)=B3)時,在該單元格顯示“1”,反之顯示“0”),為“查詢年月”獲取一個對照值,為下面制作月歷做準(zhǔn)備。②上述C2—H2單元條中公式的含義與B2相似。③在用拖拉法復(fù)制公式時,公式“絕對引用”的單元格(加了“$”號的,如“$D$13”等)不會發(fā)生改變,而“相對引用”的單元格(沒有加“$”號的,如“B3”等),則會智能化地發(fā)生變化,例如在E2單元格中,“B3”變成了“E3”,整個公式成為:=IF(WEEKDAY(DATE($D$13,$F$13,1),2)=E3,1,0)。8、選中B6單元格,輸入公式:=IF(B2=1,1,0)。選中B7單元格,輸入公式:=H6+1。用“填充柄”將B7單元格中的公式復(fù)制到B8、B9單元格中。分別選中B10、B11單元格,輸入公式:=IF(H9>=A2,0,H9+1)和=IF(H10>=A2,0,IF(H10>0,H10+1,0))。選中C6單元格,輸入公式:=IF(B6>0,B6+1,IF(C2=1,1,0))。用“填充柄”將C6單元格中的公式復(fù)制到D6—H6單元格中。選中C7單元格,輸入公式:=B7+1。用“填充柄”將C7單元格中的公式復(fù)制到C8、C9單元格中。同時選中C7—C9單元格,用“填充柄”將其中的公式復(fù)制到D7—H9單元格中。選中C10單元格,輸入公式:=IF(B11>=$A$2,0,IF(B11>0,B11+1,IF(C6=1,1,0)))。用“填充柄”將C10單元格中的公式復(fù)制到D10—H10單元格和C11單元格中。至此,整個萬年歷(其實(shí)沒有萬年,只有從1900—2050的151年)制作完成。下面,我們一起來將其裝飾一下。9、選中相應(yīng)的單元格,利用工具欄上的相應(yīng)按鈕,設(shè)置好字體、字號、字符顏色等。選中相應(yīng)的單元格,打開“單元格格式”對話框,在“對齊”標(biāo)簽下,設(shè)置好單元格中文本的對齊方式(通常情況下,垂直對齊可以一次性設(shè)置為“居中”,水平“對齊”根據(jù)具體情況設(shè)置)。同時選中I列和J列,右擊鼠標(biāo),選“隱藏”選項,將相應(yīng)的列隱藏起來,使得界面更加友好。用同樣的方法,將第2和第3行也隱藏起來。10、選中B5—H11單元格區(qū)域,打開“單元格格式”對話框,進(jìn)入“邊框”標(biāo)簽,選擇好“顏色、樣式”,并“預(yù)置”好邊框范圍,然后“確定”退出,為月歷加上邊框。11、執(zhí)行“工具→選項”命令,打開“選項”對話框(如圖4),在“視圖”標(biāo)簽下(通常是默認(rèn)標(biāo)簽),清除“零值”和“網(wǎng)格線”復(fù)選框中的“∨”號,“確定”退出,讓“零值”和“網(wǎng)格線”不顯示出來。12、將B14—H14和B15—H15單元格分別合并成一個單元格,并在B14和B15單元格中輸入公式:=IF(AND(MONTH(D1)=1,DAY(D1)=1),"新的新氣象!加油呀!",IF(AND(MONTH(D1)=3,DAY(D1)=8),"向女同胞們致敬!",IF(AND(MONTH(D1)=5,DAY(D1)=1),"勞動最光榮",IF(AND(MONTH(D1)=5,DAY(D1)=4),"青年是祖國的棟梁",IF(AND(MONTH(D1)=6,DAY(D1)=1),"原天下所有的兒童永遠(yuǎn)快樂",0)))))和=IF(AND(MONTH(D1)=7,DAY(D1)=1),"黨的恩情永不忘",IF(AND(MONTH(D1)=8,DAY(D1)=1),"提高警惕,保衛(wèi)祖國!",IF(AND(MONTH(D1)=9,DAY(D1)=10),"老師,您辛苦了!",IF(AND(MONTH(D1)=10,DAY(D1)=1),"祝我們偉大的祖國繁榮富強(qiáng)",0))))。設(shè)置好B14和B15單元格的字體、字號、字符顏色。注意:上述公式的含義是:如果當(dāng)前日期逢到相關(guān)的節(jié)日(如“元旦”等),則在B14或B15單元格顯示出相應(yīng)的祝福語言(如“新的新氣象!加油呀!”,參見圖5)。由于IF函數(shù)只能嵌套7層,而節(jié)日數(shù)量超過7個(我們這里給出了9個),因此,我們用兩個單元格來顯示。13、執(zhí)行“格式→工作表→背景”命令,打開“工作表背景”對話框(如圖6),選擇一張合適的圖片后,按“插入”按鈕,將其襯于工作表文字下面。14、在按住“Ctrl”鍵的同時,單擊D13和F13單元格,同時選中兩個單元格,開“單元格格式”對話框,切換“保護(hù)”標(biāo)簽(如圖7),清除“鎖定”前面復(fù)選框中的“∨”號,“確定”退出。15、執(zhí)行“工具→保護(hù)→保護(hù)工作表”命令,打開“保護(hù)工作表”對話框(如圖8),兩次輸入密碼后,確定退出。注意:經(jīng)過這樣的設(shè)置后,整個工作表中除了D13和F13單元格中的內(nèi)容可以改變外,其它單元格中的內(nèi)容均不能改變,保證了萬年歷的使用可靠性。在VB中操縱Excel一.Excel對象模塊Application對象|集合|Assistant|Addins(Addin)|AutoComect|OLEDBErrors|Debug|CommandBars(CommandBar)|VBE|Dialogs(Dialog)|WorksheetFunction|RecentFilds(RecentFile)|DefaultWebOptions|Windows(Window)|LanguageSettings|Workbooks(Workbook)|Filesearch|Names(name)|AnswerWizard|ODBCErrors最上層的Application是指整個應(yīng)用程序,其中最常用到的Workbooks代表活頁簿集合,在其后的括號內(nèi)的Workbook是指一個工作簿。在VB中要打開Excel,首先要引用MicrosoftExcel9.0(或8.0)ObjectLobrary。打開的步驟是:(1)定義兩個變量,數(shù)據(jù)類型指定為Excel.Application.Excel.Workbook.(2)激活Excel應(yīng)用程序。(3)打開工作簿(我們假設(shè)在當(dāng)前路徑下有一個工作簿students.xls)。代碼如下:OptionExplicitPublicappExcelAsExcel.ApplicationPublicwbExcelAsExcel.WorkbookPrivateSubSetup_Excel_object()SetappExcel=CreateObject("excel.application")SetwbExcel=appExcel.Workbooks.Open(App.Path&"\students.xls")appExcel.Visible=True'使對象可見EndSub二.工作表對象WorksheetWorkbooks對象有一個集合對象--工作表Worksheets,,用來放工作表相關(guān)的資料。Workbooks(workbook)對象|集合------------|HTMLProjcet|Publishobjects|RoutingSlip|DocumentProperties|Areas|Worksheets|WebOptions|Names|VBProject|CustomViews|CommandBars|PivotCaches|Windows|Styles|Charts調(diào)用方法是聲明一個工作表變量,用For-Each循環(huán)方式可以讀取集合對象Workbooks里的所有工作表名。代碼如下:DimtempAsExcel.WorksheetForEachtempInwbExcel.Worksheets'wbExcel是上面代碼中聲明的WorkbookFORM1.Combo1.AddItemtemp.NameNext三.讀取工作表某個選取范圍的內(nèi)容。要讀取工作表某個范圍單元格,可先定義一個Excel范圍對象變量,然后使用Rows或Columns函數(shù)指定某行或某列的范圍,范圍單元格(Cells)地址以目前被選取范圍為基準(zhǔn)。具體方法如下:(1)設(shè)置工作表對象變量操作哪個工作表;(2)選取工作表的某行或某列;(3)在上面的選取范圍內(nèi)讀取某個單元格內(nèi)容。代碼如下:DimTempsheetAsExcel.Worksheet'定義Excel工作表DimTempRangeAsExcel.Range'定義Excel工作表范圍變量'第一步:選取工作表Sheet1SetTempsheet=appExcel.Worksheets("sheet1")'第二步:選取第二行(以這行為第一行)SetTempRange=Tempsheet.Rows(2)'第三步:讀取范圍內(nèi)第一行.第二列的單元格Text1.Text=TempRange.Cells(1,2)四.其他用TempRange.Find("").Column方法可以查找目前范圍內(nèi)第一行的第一個空白單元格如何實(shí)現(xiàn)VB與EXCEL的無縫連接2003-02-17··吳剛··yeskyVB是常用的應(yīng)用軟件開發(fā)工具之一,由于VB的報表功能有限,而且一但報表格式發(fā)生變化,就得相應(yīng)修改程序,給應(yīng)用軟件的維護(hù)工作帶來極大的不便。因此有很多程序員現(xiàn)在已經(jīng)充分利用EXECL的強(qiáng)大報表功來實(shí)現(xiàn)報表功能。但由于VB與EXCEL由于分別屬于不同的應(yīng)用系統(tǒng),如何把它們有機(jī)地結(jié)合在一起,是一個值得我們研究的課題。一、VB讀寫EXCEL表:VB本身提自動化功能可以讀寫EXCEL表,其方法如下:1、在工程中引用MicrosoftExcel類型庫:從"工程"菜單中選擇"引用"欄;選擇MicrosoftExcel9.0ObjectLibrary(EXCEL2000),然后選擇"確定"。表示在工程中要引用EXCEL類型庫。2、在通用對象的聲明過程中定義EXCEL對象:DimxlAppAsExcel.ApplicationDimxlBookAsExcel.WorkBookDimxlSheetAsExcel.Worksheet3、在程序中操作EXCEL表常用命令:SetxlApp=CreateObject("Excel.Application")'創(chuàng)建EXCEL對象SetxlBook=xlApp.Workbooks.Open("文件名")'打開已經(jīng)存在的EXCEL工件簿文件xlApp.Visible=True'設(shè)置EXCEL對象可見(或不可見)SetxlSheet=xlBook.Worksheets("表名")'設(shè)置活動工作表xlSheet.Cells(row,col)=值'給單元格(row,col)賦值xlSheet.PrintOut'打印工作表xlBook.Close(True)'關(guān)閉工作簿xlApp.Quit'結(jié)束EXCEL對象SetxlApp=Nothing'釋放xlApp對象xlBook.RunAutoMacros(xlAutoOpen)'運(yùn)行EXCEL啟動宏xlBook.RunAutoMacros(xlAutoClose)'運(yùn)行EXCEL關(guān)閉宏4、在運(yùn)用以上VB命令操作EXCEL表時,除非設(shè)置EXCEL對象不可見,否則VB程序可繼續(xù)執(zhí)行其它操作,也能夠關(guān)閉EXCEL,同時也可對EXCEL進(jìn)行操作。但在EXCEL操作過程中關(guān)閉EXCEL對象時,VB程序無法知道,如果此時使用EXCEL對象,則VB程序會產(chǎn)生自動化錯誤。形成VB程序無法完全控制EXCEL的狀況,使得VB與EXCEL脫節(jié)。二、EXCEL的宏功能:EXCEL提供一個VisualBasic編輯器,打開VisualBasic編輯器,其中有一工程屬性窗口,點(diǎn)擊右鍵菜單的"插入模塊",則增加一個"模塊1",在此模塊中可以運(yùn)用VisualBasic語言編寫函數(shù)和過程并稱之為宏。其中,EXCEL有兩個自動宏:一個是啟動宏(SubAuto_Open()),另一個是關(guān)閉宏(SubAuto_Close())。它們的特性是:當(dāng)用EXCEL打含有啟動宏的工簿時,就會自動運(yùn)行啟動宏,同理,當(dāng)關(guān)閉含有關(guān)閉宏的工作簿時就會自動運(yùn)行關(guān)閉宏。但是通過VB的自動化功能來調(diào)用EXCEL工作表時,啟動宏和關(guān)閉宏不會自動運(yùn)行,而需要在VB中通過命令xlBook.RunAutoMacros(xlAutoOpen)和xlBook.RunAutoMacros(xlAutoClose)來運(yùn)行啟動宏和關(guān)閉宏。三、VB與EXCEL的相互勾通:充分利用EXCEL的啟動宏和關(guān)閉宏,可以實(shí)現(xiàn)VB與EXCEL的相互勾通,其方法如下:在EXCEL的啟動宏中加入一段程序,其功能是在磁盤中寫入一個標(biāo)志文件,同時在關(guān)閉宏中加入一段刪除此標(biāo)志文件的程序。VB程序在執(zhí)行時通過判斷此標(biāo)志文件存在與否來判斷EXCEL是否打開,如果此標(biāo)志文件存在,表明EXCEL對象正在運(yùn)行,應(yīng)該禁止其它程序的運(yùn)行。如果此標(biāo)志文件不存在,表明EXCEL對象已被用戶關(guān)閉,此時如果要使用EXCEL對象運(yùn)行,必須重新創(chuàng)建EXCEL對象。四、舉例:1、在VB中,建立一個FORM,在其上放置兩個命令按鈕,將Command1的Caption屬性改為EXCEL,Command2的Caption屬性改為End。然后在其中輸入如下程序:DimxlAppAsExcel.Application'定義EXCEL類DimxlBookAsExcel.Workbook'定義工件簿類DimxlsheetAsExcel.Worksheet'定義工作表類PrivateSubCommand1_Click()'打開EXCEL過程IfDir("D:\temp\excel.bz")=""Then'判斷EXCEL是否打開SetxlApp=CreateObject("Excel.Application")'創(chuàng)建EXCEL應(yīng)用類xlApp.Visible=True'設(shè)置EXCEL可見SetxlBook=xlApp.Workbooks.Open("D:\temp\bb.xls")'打開EXCEL工作簿Setxlsheet=xlBook.Worksheets(1)'打開EXCEL工作表xlsheet.Activate'激活工作表xlsheet.Cells(1,1)="abc"'給單元格1行駛列賦值xlBook.RunAutoMacros(xlAutoOpen)運(yùn)行EXCEL中的啟動宏ElseMsgBox("EXCEL已打開")EndIfEndSubPrivateSubCommand2_Click()IfDir("D:\temp\excel.bz")<>""Then'由VB關(guān)閉EXCELxlBook.RunAutoMacros(xlAutoClose)'執(zhí)行EXCEL關(guān)閉宏xlBook.Close(True)'關(guān)閉EXCEL工作簿xlApp.Quit'關(guān)閉EXCELEndIfSetxlApp=Nothing'釋放EXCEL對象EndEndSub2、在D盤根目錄上建立一個名為Temp的子目錄,在Temp目錄下建立一個名為"bb.xls"的EXCEL文件。3、在"bb.xls"中打開VisualBasic編輯器,在工程窗口中點(diǎn)鼠標(biāo)鍵選擇插入模塊,在模塊中輸入入下程序存盤:Subauto_open()Open"d:\temp\excel.bz"ForOutputAs#1'寫標(biāo)志文件Close#1EndSubSubauto_close()Kill"d:\temp\excel.bz"'刪除標(biāo)志文件EndSub4、運(yùn)行VB程序,點(diǎn)擊EXCEL按鈕可以打開EXCEL系統(tǒng),打開EXCEL系統(tǒng)后,VB程序和EXCEL分別屬兩個不同的應(yīng)用系統(tǒng),均可同時進(jìn)行操作,由于系統(tǒng)加了判斷,因此在VB程序中重復(fù)點(diǎn)擊EXCEL按鈕時會提示EXCEL已打開。如果在EXCEL中關(guān)閉EXCEL后再點(diǎn)EXCEL按鈕,則會重新打開EXCEL。而無論EXCEL打開與否,通過VB程序均可關(guān)閉EXCEL。這樣就實(shí)現(xiàn)了VB與EXCEL的無縫連接。Excel制作獎金計算表2006年08月16日03:52:06陳秀峰源碼下載某公司規(guī)定:一個月獎金基數(shù)為300元,病假1天扣15元,事假一天扣30元,曠工一天扣60元,扣完為止。使用這個獎金計算表時,只要將員工的出勤情況記錄在表中,該員工的獎金將自動計算出來,兼有考勤和計算獎金兩種功能。自動統(tǒng)計表做好以后還可以保存成模板,以便以后使用。本文所涉及到的Excel函數(shù)有:1、COUNTIF(Range,Criteria)2、MONTH(serial_number)3、TODAY()注意:圖中符號的含義是:B表示病假,S表示事假,G表示曠工,Q表示出勤,J表示法定休息日。1、啟動Excel2003,按照圖1所示的樣式,制作一張二維表格,并填入相關(guān)文本。2、將A1至BM1單元格合并成一個單元格后,輸入表格標(biāo)題(如“曉風(fēng)公司考勤及獎金表”),并設(shè)置好字體、字號等。3、將C2和D2單元格合并后,輸入公式:=MONTH(TODAY())&"月",用于顯示出當(dāng)前的月份。注意:在上述單元格中直接輸入月份數(shù)值也是可行的。4、選中BM4單元格,輸入公式:=IF(300-COUNTIF(C4:BL4,"B")*7.5-COUNTIF(C4:BL4,"S")*15-COUNTIF(C4:BL4,"G")*30>0,300-COUNTIF(C4:BL4,"B")*7.5-COUNTIF(C4:BL4,"S")*15-COUNTIF(C4:BL4,"G")*30,0),確認(rèn),計算出第一位員工的當(dāng)月獎金額。注意:上述公式的含義是:用“COUNTIF(C4:BL4,"B")、COUNTIF(C4:BL4,"S")、COUNTIF(C4:BL4,"G")”分別用于統(tǒng)計每位員工的病假、事假、曠工的次數(shù),再分別乘以“7.5、15、30”(每“半天”為一次)計算出所要扣去的獎勵額,再用基數(shù)“300”減去上述扣去的金額。如果(IF)差大于“0”,則顯示差(即員工的獎金額),否則顯示“0”(扣完為止)。5、再次選中BM4單元格,用“填充柄”將上述公式復(fù)制到下面的單元格中,用于計算其它員工的當(dāng)月獎勵額。注意:具體復(fù)制的數(shù)量,請根據(jù)員工的實(shí)際數(shù)目確定。6、清空表格中所填寫的數(shù)據(jù),執(zhí)行“文件→保存”命令,打開“另存為”對話框(如圖2),按“保存類型”右邊的下拉按鈕,選中“模板(*.xlt)”選項,在文件名方框中輸入一名稱(如“獎金表.xlt”),單擊“保存”按鈕,將制作好的表格文檔保存為模板。7、以后,每個月第一天,啟動Excel,執(zhí)行“文件→新建”命令,展開“新建工作簿”任務(wù)窗格(如圖3)。
點(diǎn)擊其中的“本機(jī)上的模板”選項,打開“模板”對話框(如圖4),選中“獎金表”模板文件,單擊“確定”按鈕即可新建一個空的“獎金表1”工作簿文檔。
選中C2單元格(即保存月份的單元格),將鼠標(biāo)移到編輯欄中,然后按一下F9功能鍵,將公式(=MONTH(TODAY())&"月")轉(zhuǎn)換為具體的值(如“12月”),最后將文檔保存一下。8、以后就可以用這個計算表逐日對員工進(jìn)行考勤,到了月底就可以自動計算出獎金數(shù)據(jù)了。員工信息表公式1、計算性別(F列)=IF(MOD(MID(E3,17,1),2),"男","女")2、出生年月(G列)=TEXT(MID(E3,7,8),"0-00-00")3、年齡公式(H列)=DATEDIF(G3,TODAY(),"y")4、退休日期(I列)=TEXT(EDATE(G3,12*(5*(F3="男")+55)),"yyyy/mm/ddaaaa")5、籍貫(M列)=VLOOKUP(LEFT(E3,6)*1,地址庫!E:F,2,)注:附帶示例中有地址庫代碼表6、社會工齡(T列)=DATEDIF(S3,NOW(),"y")7、公司工齡(W列)=DATEDIF(V3,NOW(),"y")&"年"&DATEDIF(V3,NOW(),"ym")&"月"&DATEDIF(V3,NOW(),"md")&"天"Now()可直接用最后日期代替8、合同續(xù)簽日期(Y列)=DATE(YEAR(V3)+LEFTB(X3,2),MONTH(V3),DAY(V3))-19、合同到期日期(Z列)=TEXT(EDATE(V3,LEFTB(X3,2)*12)-TODAY(),"[<0]過期0天;[<30]即將到期0天;還早")10、工齡工資(AA列)=MIN(700,DATEDIF($V3,NOW(),"y")*50)11、生肖(AB列)=MID("猴雞狗豬鼠?;⑼谬埳唏R羊",MOD(MID(E3,7,4),12)+1,1)二、員工考勤表公式1、本月工作日天數(shù)(AG列)=NETWORKDAYS(B$5,DATE(YEAR(N$4),MONTH(N$4)+1,),)2、調(diào)休天數(shù)公式(AI列)=COUNTIF(B9:AE9,"調(diào)")3、扣錢公式(AO列)婚喪扣10塊,病假扣20元,事假扣30元,礦工扣50元=SUM((B9:AE9={"事";"曠";"病";"喪";"婚"})*{30;50;20;10;10})四、員工數(shù)據(jù)分析公式1、本科學(xué)歷人數(shù)=COUNTIF(D:D,"本科")2、辦公室本科學(xué)歷人數(shù)=COUNTIFS(A:A,"辦公室",D:D,"本科")3、30~40歲總?cè)藬?shù)=COUNTIFS(F:F,">=30",F:F,"<40")五、其他公式1、提成比率計算=VLOOKUP(B3,$C$12:$E$21,3)2、個人所得稅計算假如A2中是應(yīng)稅工資,則計算個稅公式為:=5*MAX(A2*{0.6,2,4,5,6,7,9}%-{21,91,251,376,761,1346,3016},)3、工資條公式=CHOOSE(MOD(RO
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國調(diào)制解調(diào)器行業(yè)運(yùn)營現(xiàn)狀及投資前景規(guī)劃研究報告
- 2025-2030年中國血液透析機(jī)行業(yè)市場競爭格局及未來投資趨勢分析報告
- 2025-2030年中國聯(lián)軸器市場前景規(guī)模及發(fā)展趨勢分析報告
- 2025-2030年中國端氨基聚醚行業(yè)競爭格局與前景發(fā)展策略分析報告
- 2025-2030年中國石榴石市場運(yùn)行狀況及未來發(fā)展趨勢預(yù)測報告
- 2025-2030年中國番茄行業(yè)市場運(yùn)行狀況及投資前景趨勢分析報告
- 2025-2030年中國電暖爐桌行業(yè)競爭格局展望及投資策略分析報告新版
- 2025-2030年中國甲基丙烯酸市場競爭格局展望及投資策略分析報告
- 2025-2030年中國滾子鏈?zhǔn)袌霭l(fā)展前景調(diào)研及投資戰(zhàn)略分析報告
- 2025-2030年中國混合芳烴市場發(fā)展現(xiàn)狀與投資規(guī)劃研究報告
- 課題申報書:大中小學(xué)鑄牢中華民族共同體意識教育一體化研究
- 巖土工程勘察課件0巖土工程勘察
- 《腎上腺腫瘤》課件
- 2024-2030年中國典當(dāng)行業(yè)發(fā)展前景預(yù)測及融資策略分析報告
- 《乘用車越野性能主觀評價方法》
- 幼師個人成長發(fā)展規(guī)劃
- 2024-2025學(xué)年北師大版高二上學(xué)期期末英語試題及解答參考
- 批發(fā)面包采購合同范本
- 乘風(fēng)化麟 蛇我其誰 2025XX集團(tuán)年終總結(jié)暨頒獎盛典
- 2024年大數(shù)據(jù)分析公司與中國政府合作協(xié)議
- 一年級數(shù)學(xué)(上)計算題專項練習(xí)匯編
評論
0/150
提交評論