當前位置:首頁 » 數據倉庫 » mvcexcel寫入資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

mvcexcel寫入資料庫

發布時間: 2022-05-18 12:59:05

㈠ 新人求助,.NET MVC中如何利用npoi讀取excel,導入資料庫

這個的話,實際上就是先在伺服器端生成該Excel文件,然後使用下載功能進行下載。下載方法不止一種,那麼如何生成文件並返回該路徑呢?實際上,還是流來實現的(包括生成PDF、TXT文檔都是這樣做的)。我一般的做法是,在伺服器端生成臨時文件,然後下載就可以了。具體部分代碼如下:


varsavePath=Path.Combine(Path.GetTempPath(),fileName);
FileStreamfs=newFileStream(savePath,FileMode.Create);
workbook.Write(fs);
fs.Close();
returnsavePath;

這個是我從我項目中提取的部分代碼,fileName就是文件名(傳入的時候記得帶後綴名.xls),workbook就是我們用NPOI創建的文檔,寫入fs流中。至於怎麼用這個savePath,我的用法是在控制器要下載的地方加入如下代碼:

if(isExport)
{
stringdate=DateTime.Now.ToChineseDate()+DateTime.Now.Hour+DateTime.Now.Minute+DateTime.Now.Second;
vardesFilePath=showList.ExportExcel("拖運記錄輸入查詢資料"+date+".xls","拖運記錄輸入查詢");
varurl=Url.Action("DownloadFile","Utils",new{@fullFilePath=desFilePath});
returnJson(new{success=true,url=url});
}

首先判斷是不是下載,我通常將查詢和下載做在一個控制器中,因為查詢和下載很多地方可以共用。關鍵是desFilePath實質就是第一部分代碼return savePath。而這個Url.Action這一部分就是另外一個單獨的下載控制器,並把這個路徑傳過去,得到的url到客戶端再執行。

前端使用Ajax即可。通用下載JS代碼如下:

Application.exportHandler=function(form){
varlink=$(this);
varurl=link.attr('href');
$.post(url,form.serialize()+"&isExport=true")
.done(function(json){
json=json||{};
if(json.success){
$("body").append("<iframesrc='"+json.url+"'style='display:none;'></iframe>");
}elseif(json.errors){
Application.fancyAlert("匯出發生錯誤!");
}
})
.error(function(){
Application.fancyAlert("匯出發生錯誤!");
});
};

當點擊下載的時候,就可以執行這段JS,Application是自定義的「類」,參數就是一個form(form不必我解釋是什麼吧)。控制器返回的url就是代碼中的json.url。方法不止這一種,至於怎麼下載文檔,網上有很多,你可以自己去找找看。

㈡ 怎麼使用Spring MVC 實現 Excel 2010 的文件讀取 並將內容寫入到資料庫 謝謝各

本質是使用Java讀取
具體的知識可以參考一下《Java報表開發技術深入解析》這本書
網上有電子版的

㈢ springMVC怎麼把結果集寫入Excel並導出

一、讓不同類型數據用不同顏色顯示
在工資表中,如果想讓大於等於2000元的工資總額以「紅色」顯示,大於等於1500元的工資總額以「藍色」顯示,低於1000元的工資總額以「棕色」顯示,其它以「黑色」顯示,我們可以這樣設置。
1.打開「工資表」工作簿,選中「工資總額」所在列,執行「格式→條件格式」命令,打開「條件格式」對話框。單擊第二個方框右側的下拉按鈕,選中「大於或等於」選項,在後面的方框中輸入數值「2000」。單擊「格式」按鈕,打開「單元格格式」對話框,將「字體」的「顏色」設置為「紅色」。
2.按「添加」按鈕,並仿照上面的操作設置好其它條件(大於等於1500,字體設置為「藍色」;小於1000,字體設置為「棕色」)。
3.設置完成後,按下「確定」按鈕。
看看工資表吧,工資總額的數據是不是按你的要求以不同顏色顯示出來了。

二、建立分類下拉列表填充項
我們常常要將企業的名稱輸入到表格中,為了保持名稱的一致性,利用「數據有效性」功能建了一個分類下拉列表填充項。
1.在Sheet2中,將企業名稱按類別(如「工業企業」、「商業企業」、「個體企業」等)分別輸入不同列中,建立一個企業名稱資料庫。
2.選中A列(「工業企業」名稱所在列),在「名稱」欄內,輸入「工業企業」字元後,按「回車」鍵進行確認。
仿照上面的操作,將B、C……列分別命名為「商業企業」、「個體企業」……
3.切換到Sheet1中,選中需要輸入「企業類別」的列(如C列),執行「數據→有效性」命令,打開「數據有效性」對話框。在「設置」標簽中,單擊「允許」右側的下拉按鈕,選中「序列」選項,在下面的「來源」方框中,輸入「工業企業」,「商業企業」,「個體企業」……序列(各元素之間用英文逗號隔開),確定退出。
再選中需要輸入企業名稱的列(如D列),再打開「數據有效性」對話框,選中「序列」選項後,在「來源」方框中輸入公式:=INDIRECT(C1),確定退出。
4.選中C列任意單元格(如C4),單擊右側下拉按鈕,選擇相應的「企業類別」填入單元格中。然後選中該單元格對應的D列單元格(如D4),單擊下拉按鈕,即可從相應類別的企業名稱列表中選擇需要的企業名稱填入該單元格中。
提示:在以後列印報表時,如果不需要列印「企業類別」列,可以選中該列,右擊滑鼠,選「隱藏」選項,將該列隱藏起來即可。
三、建立「常用文檔」新菜單
在菜單欄上新建一個「常用文檔」菜單,將常用的工作簿文檔添加到其中,方便隨時調用。
1.在工具欄空白處右擊滑鼠,選「自定義」選項,打開「自定義」對話框。在「命令」標簽中,選中「類別」下的「新菜單」項,再將「命令」下面的「新菜單」拖到菜單欄。
按「更改所選內容」按鈕,在彈出菜單的「命名」框中輸入一個名稱(如「常用文檔」)。
2.再在「類別」下面任選一項(如「插入」選項),在右邊「命令」下面任選一項(如「超鏈接」選項),將它拖到新菜單(常用文檔)中,並仿照上面的操作對它進行命名(如「工資表」等),建立第一個工作簿文檔列表名稱。
重復上面的操作,多添加幾個文檔列表名稱。
3.選中「常用文檔」菜單中某個菜單項(如「工資表」等),右擊滑鼠,在彈出的快捷菜單中,選「分配超鏈接→打開」選項,打開「分配超鏈接」對話框。通過按「查找范圍」右側的下拉按鈕,定位到相應的工作簿(如「工資.xls」等)文件夾,並選中該工作簿文檔。
重復上面的操作,將菜單項和與它對應的工作簿文檔超鏈接起來。
4.以後需要打開「常用文檔」菜單中的某個工作簿文檔時,只要展開「常用文檔」菜單,單擊其中的相應選項即可。
提示:盡管我們將「超鏈接」選項拖到了「常用文檔」菜單中,但並不影響「插入」菜單中「超鏈接」菜單項和「常用」工具欄上的「插入超鏈接」按鈕的功能。
四、製作「專業符號」工具欄
在編輯專業表格時,常常需要輸入一些特殊的專業符號,為了方便輸入,我們可以製作一個屬於自己的「專業符號」工具欄。
1.執行「工具→宏→錄制新宏」命令,打開「錄制新宏」對話框,輸入宏名?如「fuhao1」?並將宏保存在「個人宏工作簿」中,然後「確定」開始錄制。選中「錄制宏」工具欄上的「相對引用」按鈕,然後將需要的特殊符號輸入到某個單元格中,再單擊「錄制宏」工具欄上的「停止」按鈕,完成宏的錄制。
仿照上面的操作,一一錄制好其它特殊符號的輸入「宏」。
2.打開「自定義」對話框,在「工具欄」標簽中,單擊「新建」按鈕,彈出「新建工具欄」對話框,輸入名稱——「專業符號」,確定後,即在工作區中出現一個工具條。
切換到「命令」標簽中,選中「類別」下面的「宏」,將「命令」下面的「自定義按鈕」項拖到「專業符號」欄上(有多少個特殊符號就拖多少個按鈕)。
3.選中其中一個「自定義按鈕」,仿照第2個秘技的第1點對它們進行命名。
4.右擊某個命名後的按鈕,在隨後彈出的快捷菜單中,選「指定宏」選項,打開「指定宏」對話框,選中相應的宏(如fuhao1等),確定退出。
重復此步操作,將按鈕與相應的宏鏈接起來。
5.關閉「自定義」對話框,以後可以像使用普通工具欄一樣,使用「專業符號」工具欄,向單元格中快速輸入專業符號了。
五、用「視面管理器」保存多個列印頁面
有的工作表,經常需要列印其中不同的區域,用「視面管理器」吧。
1.打開需要列印的工作表,用滑鼠在不需要列印的行(或列)標上拖拉,選中它們再右擊滑鼠,在隨後出現的快捷菜單中,選「隱藏」選項,將不需要列印的行(或列)隱藏起來。
2.執行「視圖→視面管理器」命令,打開「視面管理器」對話框,單擊「添加」按鈕,彈出「添加視面」對話框,輸入一個名稱(如「上報表」)後,單擊「確定」按鈕。
3.將隱藏的行(或列)顯示出來,並重復上述操作,「添加」好其它的列印視面。
4.以後需要列印某種表格時,打開「視面管理器」,選中需要列印的表格名稱,單擊「顯示」按鈕,工作表即刻按事先設定好的界面顯示出來,簡單設置、排版一下,按下工具欄上的「列印」按鈕,一切就OK了。
六、讓數據按需排序
如果你要將員工按其所在的部門進行排序,這些部門名稱既的有關信息不是按拼音順序,也不是按筆畫順序,怎麼辦?可採用自定義序列來排序。
1.執行「格式→選項」命令,打開「選項」對話框,進入「自定義序列」標簽中,在「輸入序列」下面的方框中輸入部門排序的序列(如「機關,車隊,一車間,二車間,三車間」等),單擊「添加」和「確定」按鈕退出。
2.選中「部門」列中任意一個單元格,執行「數據→排序」命令,打開「排序」對話框,單擊「選項」按鈕,彈出「排序選項」對話框,按其中的下拉按鈕,選中剛才自定義的序列,按兩次「確定」按鈕返回,所有數據就按要求進行了排序。

七、把數據徹底隱藏起來
工作表部分單元格中的內容不想讓瀏覽者查閱,只好將它隱藏起來了。
1.選中需要隱藏內容的單元格(區域),執行「格式→單元格」命令,打開「單元格格式」對話框,在「數字」標簽的「分類」下面選中「自定義」選項,然後在右邊「類型」下面的方框中輸入「;;;」(三個英文狀態下的分號)。
2.再切換到「保護」標簽下,選中其中的「隱藏」選項,按「確定」按鈕退出。
3.執行「工具→保護→保護工作表」命令,打開「保護工作表」對話框,設置好密碼後,「確定」返回。
經過這樣的設置以後,上述單元格中的內容不再顯示出來,就是使用Excel的透明功能也不能讓其現形。
提示:在「保護」標簽下,請不要清除「鎖定」前面復選框中的「∨」號,這樣可以防止別人刪除你隱藏起來的數據。
八、讓中、英文輸入法智能化地出現
在編輯表格時,有的單元格中要輸入英文,有的單元格中要輸入中文,反復切換輸入法實在不方便,何不設置一下,讓輸入法智能化地調整呢?
選中需要輸入中文的單元格區域,執行「數據→有效性」命令,打開「數據有效性」對話框,切換到「輸入法模式」標簽下,按「模式」右側的下拉按鈕,選中「打開」選項後,「確定」退出。
以後當選中需要輸入中文的單元格區域中任意一個單元格時,中文輸入法(輸入法列表中的第1個中文輸入法)自動打開,當選中其它單元格時,中文輸入法自動關閉。
九、讓「自動更正」輸入統一的文本
你是不是經常為輸入某些固定的文本,如《電腦報》而煩惱呢?那就往下看吧。
1.執行「工具→自動更正」命令,打開「自動更正」對話框。
2.在「替換」下面的方框中輸入「pcw」(也可以是其他字元,「pcw」用小寫),在「替換為」下面的方框中輸入「《電腦報》」,再單擊「添加」和「確定」按鈕。
3.以後如果需要輸入上述文本時,只要輸入「pcw」字元?此時可以不考慮「pcw」的大小寫?,然後確認一下就成了。
十、在Excel中自定義函數
Excel函數雖然豐富,但並不能滿足我們的所有需要。我們可以自定義一個函數,來完成一些特定的運算。下面,我們就來自定義一個計算梯形面積的函數:
1.執行「工具→宏→Visual Basic編輯器」菜單命令(或按「Alt+F11」快捷鍵),打開Visual Basic編輯窗口。
2.在窗口中,執行「插入→模塊」菜單命令,插入一個新的模塊——模塊1。
3.在右邊的「代碼窗口」中輸入以下代碼:
Function V(a,b,h)V = h*(a+b)/2End Function
4.關閉窗口,自定義函數完成。
以後可以像使用內置函數一樣使用自定義函數。
提示:用上面方法自定義的函數通常只能在相應的工作簿中使用。
十一、表頭下面襯張圖片
為工作表添加的背景,是襯在整個工作表下面的,能不能只襯在表頭下面呢?
1.執行「格式→工作表→背景」命令,打開「工作表背景」對話框,選中需要作為背景的圖片後,按下「插入」按鈕,將圖片襯於整個工作表下面。
2.在按住Ctrl鍵的同時,用滑鼠在不需要襯圖片的單元格(區域)中拖拉,同時選中這些單元格(區域)。
3.按「格式」工具欄上的「填充顏色」右側的下拉按鈕,在隨後出現的「調色板」中,選中「白色」。經過這樣的設置以後,留下的單元格下面襯上了圖片,而上述選中的單元格(區域)下面就沒有襯圖片了(其實,是圖片被「白色」遮蓋了)。
提示?襯在單元格下面的圖片是不支持列印的。
十二、用連字元「&」來合並文本
如果我們想將多列的內容合並到一列中,不需要利用函數,一個小小的連字元「&」就能將它搞定(此處假定將B、C、D列合並到一列中)。
1.在D列後面插入兩個空列(E、F列),然後在D1單元格中輸入公式:=B1&C1&D1。
2.再次選中D1單元格,用「填充柄」將上述公式復制到D列下面的單元格中,B、C、D列的內容即被合並到E列對應的單元格中。
3.選中E列,執行「復制」操作,然後選中F列,執行「編輯→選擇性粘貼」命令,打開「選擇性粘貼」對話框,選中其中的「數值」選項,按下「確定」按鈕,E列的內容(不是公式)即被復制到F列中。
4.將B、C、D、E列刪除,完成合並工作。
提示:完成第1、2步的操作,合並效果已經實現,但此時如果刪除B、C、D列,公式會出現錯誤。故須進行第3步操作,將公式轉換為不變的「值」。

生成績條
常有朋友問「如何列印成績條」這樣的問題,有不少人採取錄制宏或VBA的方法來實現,這對於初學者來說有一定難度。出於此種考慮,我在這里給出一種用函數實現的簡便方法。
此處假定學生成績保存在Sheet1工作表的A1至G64單元格區域中,其中第1行為標題,第2行為學科名稱。
1.切換到Sheet2工作表中,選中A1單元格,輸入公式:=IF(MOD(ROW(),3)=0,″″,IF(0MOD?ROW(),3(=1,sheet1!Aū,INDEX(sheet1!$A:$G,INT(((ROW()+4)/3)+1),COLUMN())))。
2.再次選中A1單元格,用「填充柄」將上述公式復制到B1至G1單元格中;然後,再同時選中A1至G1單元格區域,用「填充柄」將上述公式復制到A2至G185單元格中。
至此,成績條基本成型,下面簡單修飾一下。
3.調整好行高和列寬後,同時選中A1至G2單元格區域(第1位學生的成績條區域),按「格式」工具欄「邊框」右側的下拉按鈕,在隨後出現的邊框列表中,選中「所有框線」選項,為選中的區域添加邊框(如果不需要邊框,可以不進行此步及下面的操作)。
4.同時選中A1至G3單元格區域,點擊「常用」工具欄上的「格式刷」按鈕,然後按住滑鼠左鍵,自A4拖拉至G186單元格區域,為所有的成績條添加邊框。
按「列印」按鈕,即可將成績條列印出來。
十四、Excel幫你選函數
在用函數處理數據時,常常不知道使用什麼函數比較合適。Excel的「搜索函數」功能可以幫你縮小范圍,挑選出合適的函數。
執行「插入→函數」命令,打開「插入函數」對話框,在「搜索函數」下面的方框中輸入要求(如「計數」),然後單擊「轉到」按鈕,系統即刻將與「計數」有關的函數挑選出來,並顯示在「選擇函數」下面的列表框中。再結合查看相關的幫助文件,即可快速確定所需要的函數。
十五、同時查看不同工作表中多個單元格內的數據
有時,我們編輯某個工作表(Sheet1)時,需要查看其它工作表中(Sheet2、Sheet3……)某個單元格的內容,可以利用Excel的「監視窗口」功能來實現。
執行「視圖→工具欄→監視窗口」命令,打開「監視窗口」,單擊其中的「添加監視」按鈕,展開「添加監視點」對話框,用滑鼠選中需要查看的單元格後,再單擊「添加」按鈕。重復前述操作,添加其它「監視點」。
以後,無論在哪個工作表中,只要打開「監視窗口」,即可查看所有被監視點單元格內的數據和相關信息。
十六、為單元格快速畫邊框
在Excel 2002以前的版本中,為單元格區域添加邊框的操作比較麻煩,Excel 2002對此功能進行了全新的拓展。
單擊「格式」工具欄上「邊框」右側的下拉按鈕,在隨後彈出的下拉列表中,選「繪圖邊框」選項,或者執行「視圖→工具欄→邊框」命令,展開「邊框」工具欄。
單擊工具欄最左側的下拉按鈕,選中一種邊框樣式,然後在需要添加邊框的單元格區域中拖拉,即可為相應的單元格區域快速畫上邊框。
提示:①如果畫錯了邊框,沒關系,選中工具欄上的「擦除邊框」按鈕,然後在錯誤的邊框上拖拉一下,就可以清除掉錯誤的邊框。②如果需要畫出不同顏色的邊框,可以先按工具欄右側的「線條顏色」按鈕,在隨後彈出的調色板中選中需要的顏色後,再畫邊框即可。③這一功能還可以在單元格中畫上對角的斜線。

十七、控制特定單元格輸入文本的長度
你能想像當你在該輸入四位數的單元格中卻填入了一個兩位數,或者在該輸入文字的單元格中你卻輸入了數字的時候,Excel就能自動判斷、即時分析並彈出警告,那該多好啊!要實現這一功能,對Excel來說,也並不難。
例如我們將游標定位到一個登記「年份」的單元格中,為了輸入的統一和計算的方便,我們希望「年份」都用一個四位數來表示。所以,我們可以單擊「數據」菜單的「有效性」選項。在「設置」卡片「有效性條件」的「允許」下拉菜單中選擇「文本長度」。然後在「數據」下拉菜單中選擇「等於」,且「長度」為「4」。同時,我們再來到「出錯警告」卡片中,將「輸入無效數據時顯示的出錯警告」設為「停止」,並在「標題」和「錯誤信息」欄中分別填入「輸入文本非法!」和「請輸入四位數年份。」字樣。
很顯然,當如果有人在該單元格中輸入的不是一個四位數時,Excel就會彈出示的警告對話框,告訴你出錯原因,並直到你輸入了正確「樣式」的數值後方可繼續錄入。神奇吧?其實,在Excel的「數據有效性」判斷中,還有許多特殊類型的數據格式可選,比如「文本類型」啊,「序列大小」啊,「時間遠近」啊,如你有興趣,何不自作主張,自己設計一種檢測標准,讓你的Excel展示出與眾不同的光彩呢。
十八、成組填充多張表格的固定單元格
我們知道每次打開Excel,軟體總是默認打開多張工作表。由此就可看出Excel除了擁有強大的單張表格的處理能力,更適合在多張相互關聯的表格中協調工作。要協調關聯,當然首先就需要同步輸入。因此,在很多情況下,都會需要同時在多張表格的相同單元格中輸入同樣的內容。
那麼如何對表格進行成組編輯呢?首先我們單擊第一個工作表的標簽名「Sheet1」,然後按住Shift鍵,單擊最後一張表格的標簽名「Sheet3」(如果我們想關聯的表格不在一起,可以按住Ctrl鍵進行點選)。此時,我們看到Excel的標題欄上的名稱出現了「工作組」字樣,我們就可以進行對工作組的編輯工作了。在需要一次輸入多張表格內容的單元格中隨便寫點什麼,我們發現,「工作組」中所有表格的同一位置都顯示出相應內容了。
但是,僅僅同步輸入是遠遠不夠的。比如,我們需要將多張表格中相同位置的數據統一改變格式該怎麼辦呢?首先,我們得改變第一張表格的數據格式,再單擊「編輯」菜單的「填充」選項,然後在其子菜單中選擇「至同組工作表」。這時,Excel會彈出「填充成組工作表」的對話框,在這里我們選擇「格式」一項,點「確定」後,同組中所有表格該位置的數據格式都改變了。
十九、改變文本的大小寫
在Excel中,為表格處理和數據運算提供最強大支持的不是公式,也不是資料庫,而是函數。不要以為Excel中的函數只是針對數字,其實只要是寫進表格中的內容,Excel都有對它編輯的特殊函數。例如改變文本的大小寫。
在Excel 2002中,至少提供了三種有關文本大小寫轉換的函數。它們分別是:「=UPPER(源數據格)」,將文本全部轉換為大寫;「=LOWER(源數據格)」,將文本全部轉換成小寫;「=PROPER(源數據格)」,將文本轉換成「適當」的大小寫,如讓每個單詞的首字母為大寫等。例如,我們在一張表格的A1單元格中輸入小寫的「excel」,然後在目標單元格中輸入「=UPPER(A1)」,回車後得到的結果將會是「EXCEL」。同樣,如果我們在A3單元格中輸入「mr.weiwei」,然後我們在目標單元格中輸入「=PROPER(A3)」,那麼我們得到的結果就將是「Mr.Weiwei」了。
二十、提取字元串中的特定字元
除了直接輸入外,從已存在的單元格內容中提取特定字元輸入,絕對是一種省時又省事的方法,特別是對一些樣式雷同的信息更是如此,比如員工名單、籍貫等信息。
如果我們想快速從A4單元格中提取稱謂的話,最好使用「=RIGHT(源數據格,提取的字元數)」函數,它表示「從A4單元格最右側的字元開始提取2個字元」輸入到此位置。當然,如果你想提取姓名的話,則要使用「=LEFT(源數據格,提取的字元數)」函數了。還有一種情況,我們不從左右兩端開始,而是直接從數據中間提取幾個字元。比如我們要想從A5單元格中提取「武漢」兩個字時,就只須在目標單元格中輸入「=MID(A5,4,2)」就可以了。意思是:在A5單元格中提取第4個字元後的兩個字元,也就是第4和第5兩個字。

二十一、把基數詞轉換成序數詞將英文的基數詞轉換成序數詞是一個比較復雜的問題。因為它沒有一個十分固定的模式:大多數的數字在變成序數詞都是使用的「th」後綴,但大凡是以「1」、「2」、「3」結尾的數字卻分別是以「st」、「nd」和「rd」結尾的。而且,「11」、「12」、「13」這3個數字又不一樣,它們卻仍然是以「th」結尾的。因此,實現起來似乎很復雜。其實,只要我們理清思路,找准函數,只須編寫一個公式,就可輕松轉換了。不信,請看:「=A2&IF(OR(VALUE(RIGHT(A2,2))={11,12,13}),″th″,IF(OR(VALUE(RIGHT(A2))={1,2,3,},CHOOSE(RIGHT(A2),″st″,″nd″,″rd″),″th″))」。該公式盡管一長串,不過含義卻很明確:①如果數字是以「11」、「12」、「13」結尾的,則加上「th」後綴;②如果第1原則無效,則檢查最後一個數字,以「1」結尾使用「st」、以「2」結尾使用「nd」、以「3」結尾使用「rd」;③如果第1、2原則都無效,那麼就用「th」。因此,基數詞和序數詞的轉換實現得如此輕松和快捷。
二十二、用特殊符號補齊位數
和財務打過交道的人都知道,在賬面填充時有一種約定俗成的「安全填寫法」,那就是將金額中的空位補齊,或者在款項數據的前面加上「$」之類的符號。其實,在Excel中也有類似的輸入方法,那就是「REPT」函數。它的基本格式是「=REPT(「特殊符號」,填充位數)」。
比如,我們要在中A2單元格里的數字結尾處用「#」號填充至16位,就只須將公式改為「=(A2&REPT(″#″,16-LEN(A2)))」即可;如果我們要將A3單元格中的數字從左側用「#」號填充至16位,就要改為「=REPT(″#″,16-LEN(A3)))&A3」;另外,如果我們想用「#」號將A4中的數值從兩側填充,則需要改為「=REPT(″#″,8-LEN(A4)/2)&A4&REPT(″#″)8-LEN(A4)/2)」;如果你還嫌不夠專業,要在A5單元格數字的頂頭加上「$」符號的話,那就改為:「=(TEXT(A5,″$#,##0.00″(&REPT(″#″,16-LEN(TEXT(A5,″$#,##0.00″))))」,一定能滿足你的要求。
二十三、創建文本直方圖
除了重復輸入之外,「REPT」函數另一項衍生應用就是可以直接在工作表中創建由純文本組成的直方圖。它的原理也很簡單,就是利用特殊符號的智能重復,按照指定單元格中的計算結果表現出長短不一的比較效果。
比如我們首先製作一張年度收支平衡表,然後將「E列」作為直方圖中「預算內」月份的顯示區,將「G列」則作為直方圖中「超預算」的顯示區。然後根據表中已有結果「D列」的數值,用「Wingdings」字體的「N」字元表現出來。具體步驟如下:
在E3單元格中寫入公式「=IF(D30,REPT(″n″,ROUND(D3*100,0)),″″)」,也拖動填充柄至G14。我們看到,一個沒有動用Excel圖表功能的純文本直方圖已展現眼前,方便直觀,簡單明了。
二十四、計算單元格中的總字數
有時候,我們可能對某個單元格中字元的數量感興趣,需要計算單元格中的總字數。要解決這個問題,除了利用到「SUBSTITUTE」函數的虛擬計算外,還要動用「TRIM」函數來刪除空格。比如現在A1單元格中輸入有「how many words?」字樣,那麼我們就可以用如下的表達式來幫忙:
「=IF(LEN(A1)=0,0,LEN(TRIM(A1))-LEN(SUBSTITUTE(TRIM(A1),″,″,″″))+1)」
該式的含義是先用「SUBSTITUTE」函數創建一個新字元串,並且利用「TRIM」函數刪除其中字元間的空格,然後計算此字元串和原字元串的數位差,從而得出「空格」的數量,最後將空格數+1,就得出單元格中字元的數量了。
二十五、關於歐元的轉換
這是Excel 2002中的新工具。如果你在安裝Excel 2002時選擇的是默認方式,那麼很可能不能在「工具」菜單中找到它。不過,我們可以先選擇「工具」菜單中的「載入宏」,然後在彈出窗口中勾選「歐元工具」選項,「確定」後Excel 2002就會自行安裝了。
完成後我們再次打開「工具」菜單,單擊「歐元轉換」,一個獨立的專門用於歐元和歐盟成員國貨幣轉換的窗口就出現了。與Excel的其他函數窗口一樣,我們可以通過滑鼠設置貨幣轉換的「源區域」和「目標區域」,然後再選擇轉換前後的不同幣種即可。所示的就是「100歐元」分別轉換成歐盟成員國其他貨幣的比價一覽表。當然,為了使歐元的顯示更顯專業,我們還可以點擊Excel工具欄上的「歐元」按鈕,這樣所有轉換後的貨幣數值都是歐元的樣式了。

㈣ mvc c#導入Excel表格數據到資料庫,並顯示在頁面

上頭說的很明白了 類型定義錯誤

㈤ 在mvc中怎麼把數據導入excel中

你的mvc描述的概念太廣泛了,你要告訴大家,你用的什麼語言什麼框架,不然給你源碼你也用不了啊。
具體流程,無非是三步:
1 讀取execel文件內容。高級語言,都會有對應的組件做支持的,
2 見execl內容轉化為POJO(簡單數據對象)
3 將POJO通過ORM框架。或者自己寫sql插入資料庫

㈥ easyui + SpringMvc 上傳excel到伺服器,然後解析插入mysql資料庫

直接把#換成「?」即可,表示當前的頁面,如果有其他參數應該寫成「?&id=...」

㈦ 用Springmvc上傳excel表格並導入資料庫怎麼寫

可以參考一下下面的例子:

http://blog.csdn.net/jinwufeiyang/article/details/52216218

㈧ asp.net MVC3 excel導入到sql server,怎麼寫求代碼!!

Excel數據導入到資料庫, 可以分兩個步驟:第一步,先將Excel的數據讀取到DataSet。第二步,將DataSet中的數據逐條寫入資料庫。 這里我給你一個將Excel數據讀取到DataSet的方法:先引用:using System.Data.OleDb;//讀取Excel數據到DataSetpublic DataSet ImportToDS(string fileName){ string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties=Excel 8.0"; OleDbConnection connOleDb = new OleDbConnection(strConn); DataSet ds = new DataSet(); OleDbDataAdapter da = new OleDbDataAdapter("select * from [Sheet1$]", connOleDb); da.Fill(ds); return ds;}得到數據的DataSet很容易就寫入資料庫了。 以上信息希望對你有幫助。。^^

㈨ springmvc excel表格數據導入資料庫怎麼做

一) 其實這個功能在spring2.x時代就提供了。一直沒用過,今天在spring-mvc3.2.x的環境下試驗了一次。還算簡單易用。
二) 依賴。
spring依賴POI或jExcel來實現對excel輸出的支持,前者是apache出品,貌似名氣更大,本例使用第一個。

<dependency>

<groupId>org.apache.poi</groupId>

<artifactId>poi</artifactId>

<version>3.7</version>

</dependency>

三) spring提供了一個AbstractExcelView作為自己實現的視圖的父類。實例代碼如下。

packageying.car.view;

importjava.text.DateFormat;

importjava.text.SimpleDateFormat;

importjava.util.List;

importjava.util.Map;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importorg.apache.poi.hssf.usermodel.HSSFDataFormat;

importorg.apache.poi.hssf.usermodel.HSSFSheet;

importorg.apache.poi.hssf.usermodel.HSSFWorkbook;

importorg.apache.poi.ss.usermodel.Cell;

importorg.apache.poi.ss.usermodel.CellStyle;

importorg.apache.poi.ss.usermodel.IndexedColors;

importorg.joda.time.DateTime;

importorg.slf4j.Logger;

importorg.slf4j.LoggerFactory;

importorg.springframework.web.servlet.view.document.AbstractExcelView;

importying.car.binding.DateRange;

importying.car.domain.RefuelingRecord;

{

=LoggerFactory.getLogger(RefuelingRecordExcelView.class);

_FORMAT=newSimpleDateFormat("yyyyMMdd");

@Override

@SuppressWarnings({"unchecked"})

(

Map<String,Object>model,//MVC中的M就在這里了

HSSFWorkbookworkbook,

HttpServletRequestrequest,

HttpServletResponseresponse)throwsException

{

("yyyy/MM/dd"));

LOGGER.debug("end:{}",newDateTime(dr.getEnd()).toString("yyyy/MM/dd"));

}

}

HSSFSheetsheet=workbook.createSheet(DATE_FORMAT.format(dr.getStart())+"-"+DATE_FORMAT.format(dr.getEnd()));

setColumnsWidth(sheet);

fillTableHeader(workbook,sheet);

fillTableBody(workbook,sheet,rrl);

}

privatevoidsetColumnsWidth(HSSFSheetsheet){

finalint[]warr=newint[]{

500,//<空>

4500,//日期

4500,//車輛

4500,//燃油種類

4500,//燃油單價

4500,//加油方式

4500,//加油量

3000,//花費

12000//備注

};

for(inti=0;i<warr.length;i++){

sheet.setColumnWidth(i,warr[i]);

}

}

//填充表格頭

privatevoidfillTableHeader(HSSFWorkbookworkbook,HSSFSheetsheet){

finalString[]contents=newString[]{

"日期",

"車輛",

"燃油種類",

"燃油單價(元/升)",

"加油方式",

"加油量(升)",

"花費(元)",

"備注"

};

intr=1;

intc=1;

CellStylestyle=workbook.createCellStyle();

style.setFillForegroundColor(IndexedColors.YELLOW.getIndex());//填充黃色

style.setFillPattern(CellStyle.SOLID_FOREGROUND);//填充方式

//設置border

style.setBorderLeft(CellStyle.BORDER_THIN);

style.setBorderRight(CellStyle.BORDER_THIN);

style.setBorderTop(CellStyle.BORDER_THIN);

style.setBorderBottom(CellStyle.BORDER_THIN);

for(inti=0;i<contents.length;i++){

Cellcell=getCell(sheet,r,c+i);

cell.setCellValue(contents[i]);

cell.setCellStyle(style);

}

}

privatevoidfillTableBody(HSSFWorkbookworkbook,HSSFSheetsheet,List<RefuelingRecord>records){

//通用style

CellStylestyle=workbook.createCellStyle();

style.setFillForegroundColor(IndexedColors.WHITE.getIndex());//填充白色

style.setFillPattern(CellStyle.SOLID_FOREGROUND);//填充方式

style.setBorderLeft(CellStyle.BORDER_THIN);

style.setBorderRight(CellStyle.BORDER_THIN);

style.setBorderTop(CellStyle.BORDER_THIN);

style.setBorderBottom(CellStyle.BORDER_THIN);

//日期style

CellStyledateStyle=workbook.createCellStyle();

dateStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());//填充白色

dateStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);//填充方式

dateStyle.setBorderLeft(CellStyle.BORDER_THIN);

dateStyle.setBorderRight(CellStyle.BORDER_THIN);

dateStyle.setBorderTop(CellStyle.BORDER_THIN);

dateStyle.setBorderBottom(CellStyle.BORDER_THIN);

dateStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));

intr=2;

intc=1;

Cellcell=null;

for(inti=0;i<records.size();i++){

RefuelingRecordrr=records.get(i);

//日期

cell=getCell(sheet,r,c+0);

if(rr.getDate()!=null)

cell.setCellValue(rr.getDate());

cell.setCellStyle(dateStyle);

//車輛

cell=getCell(sheet,r,c+1);

if(rr.getVehicle().getNickname()!=null)

cell.setCellValue(rr.getVehicle().getNickname());

cell.setCellStyle(style);

//燃油種類

cell=getCell(sheet,r,c+2);

if(rr.getGasType()!=null){

Strings=null;

switch(rr.getGasType()){

case_0:s="0號柴油";break;

case_93:s="93號汽油";break;

case_97:s="97號汽油";break;

case_98:s="98號汽油";break;

}

cell.setCellValue(s);

}

cell.setCellStyle(style);

//單價

cell=getCell(sheet,r,c+3);

if(rr.getPriceOfGas()!=null)

cell.setCellValue(rr.getPriceOfGas());

cell.setCellStyle(style);

//加油方式

cell=getCell(sheet,r,c+4);

if(rr.getRefuelingType()!=null){

Strings=null;

switch(rr.getRefuelingType()){

caseFIXED_CUBAGE:

s="固定容積";break;

caseFIXED_MONEY:

s="固定金額";break;

caseFULL:

s="加滿";break;

}

cell.setCellValue(s);

}

cell.setCellStyle(style);

//加油量

cell=getCell(sheet,r,c+5);

if(rr.getCubageOfGas()!=null)

cell.setCellValue(rr.getCubageOfGas());

cell.setCellStyle(style);

//花費

cell=getCell(sheet,r,c+6);

if(rr.getSumOfMoney()!=null)

cell.setCellValue(rr.getSumOfMoney());

cell.setCellStyle(style);

//備注

cell=getCell(sheet,r,c+7);

if(rr.getComment()!=null)

cell.setCellValue(rr.getComment());

cell.setCellStyle(style);

r++;

}

}

}

cell.setCellStyle(style);

// 燃油種類
cell = getCell(sheet, r, c + 2);
if (rr.getGasType() != null) {
String s = null;
switch (rr.getGasType()) {
case _0: s = "0號柴油"; break;
case _93: s = "93號汽油"; break;
case _97: s = "97號汽油"; break;
case _98: s = "98號汽油"; break;
}
cell.setCellValue(s);
}
cell.setCellStyle(style);

// 單價
cell = getCell(sheet, r, c + 3);
if (rr.getPriceOfGas() != null)
cell.setCellValue(rr.getPriceOfGas());
cell.setCellStyle(style);

// 加油方式
cell = getCell(sheet, r, c + 4);
if (rr.getRefuelingType() != null) {
String s = null;
switch (rr.getRefuelingType()) {
case FIXED_CUBAGE:
s = "固定容積"; break;
case FIXED_MONEY:
s = "固定金額"; break;
case FULL:
s = "加滿"; break;
}
cell.setCellValue(s);
}
cell.setCellStyle(style);

// 加油量
cell = getCell(sheet, r, c + 5);
if (rr.getCubageOfGas() != null)
cell.setCellValue(rr.getCubageOfGas());
cell.setCellStyle(style);

// 花費
cell = getCell(sheet, r, c + 6);
if (rr.getSumOfMoney() != null)
cell.setCellValue(rr.getSumOfMoney());
cell.setCellStyle(style);

// 備注
cell = getCell(sheet, r, c + 7);
if (rr.getComment() != null)
cell.setCellValue(rr.getComment());
cell.setCellStyle(style);

r ++;
}
}
}

四) Controller中返回邏輯視圖名 (代碼片段)

Java代碼

@RequiresUser//安全框架用元注釋

@RequiresRoles({"ROLE_USER"})

@RequestMapping(value="/list/excel",method=RequestMethod.GET)

publicStringlistByExcel(

@DateRangeFormat(pattern="yyyy-MM-dd")@RequestParam("dateRange")DateRangedateRange,

ModelMapmodelMap

)

{

}

//放入model

modelMap.put("dateRange",dateRange);

modelMap.put("refuelingRecordList",gasService.(currentUserId,dateRange));

return"refueling-record-list";//最終返回邏輯視圖名

}

五) 為spring-mvc配置多個視圖解析器。

<beanclass="org.springframework.web.servlet.view.XmlViewResolver">

<propertyname="order"value="1"/><!--order很重要-->

<propertyname="location"value="classpath:/META-INF/views.xml"/>

</bean>

<beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver">

<propertyname="order"value="9999"/>

<propertyname="viewClass"value="org.springframework.web.servlet.view.JstlView"/>

<propertyname="prefix"value="/WEB-INF/jsp/"/>

<propertyname="suffix"value=".jsp"/>

六) 效果圖

㈩ mvc里如何上傳excel然後將裡面的數據導入到SQL資料庫里

我只有asp.net的,c#也可以使用,但是沒測試過java那些的。將Excel裡面的數據導入到資料庫中的原理就是將Excel裡面的數據存儲到一個dataTable中,然後將數據一行一行添加到資料庫的表裡。給你部分代碼,相信你能夠如此好學,應該能看懂,有些變數你自己研究是什麼,不然全部給你打出來了,你就只會了。

SqlConnectioncon=newSqlConnection(ConfigurationManager.AppSettings["aa"].ToString());
con.Open();//資料庫連接字元串
DataTabledtXls=newDataTable();
if(this.fudAdd.PostedFile.FileName.ToString().Trim()!=""&&this.fudAdd.PostedFile.FileName!=null)
{
stringfilePath=this.fudAdd.PostedFile.FileName.ToString().Trim();
FileInfofileTag=newFileInfo(fudAdd.PostedFile.FileName);
stringextendedName=fileTag.Extension;
if(extendedName.ToLower()!=".xls"&&extendedName.ToLower()!=".xlsx")
{
Response.Write("<script>alert('請選擇一個Excel文件!');</script>");
return;
}
else
{
dtXls=ExcelToDataTable(filePath,extendedName);
if(dtXls==null||dtXls.Rows.Count<=0||dtXls.Columns[0].ToString()=="")
{
Response.Write("<script>alert('請你確認上傳的Excel中有資料!');</script>");
return;
}
else
{
if(dtXls.Columns[0].ToString()!="手機號碼"||dtXls.Columns[1].ToString()!="狀態")
{
Response.Write("<script>alert('請確定Excel資料的格式為[手機號碼][狀態]!');</script>");
return;
}
else
{
if(dtXls.Rows[0][0].ToString()=="")
{
Response.Write("<script>alert('請確定Excel資料的格式為[手機號碼][狀態]!');</script>");
return;
}
else
{
stringresult=AddXlsData(dtXls,con);
string[]resultData=result.Split('-');
stringmsg="資料上傳成功!共計"+resultData[0]+"條成功,"+resultData[1]+"條失敗!";
Response.Write("<script>alert('"+msg+"');</script>");
logwrite.LogOpera(userid,"UnExistMobile_Mag.aspx","UnExistMobile_Mag.aspx.cs","成功上傳一批空號");//記錄log
BindData();
return;
}
}
}
}
con.Close();

//
#regionExcelToDataTable
///<summary>
///讀取xls文件
///Addby
///</summary>
///<paramname="fileName"></param>
///<returns></returns>
(stringfileName,stringextendedName)
{
stringstrConn=string.Empty;
if(extendedName.ToLower()==".xls")
{
strConn="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+fileName+";ExtendedProperties='Excel8.0;HDR=Yes;IMEX=1';";
}
if(extendedName.ToLower()==".xlsx")
{
strConn="Provider=Microsoft.ACE.OLEDB.12.0;DataSource="+fileName+";ExtendedProperties='Excel12.0;HDR=YES'";
}
OleDbConnectionconn=newOleDbConnection(strConn);
conn.Open();
System.Data.DataTableschemaTable=conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,null);
stringtableName=schemaTable.Rows[0][2].ToString().Trim();
stringstrExcel="";
OleDbDataAdaptermyCommand=null;
DataSetds=null;
strExcel="Select*From["+tableName+"]";
myCommand=newOleDbDataAdapter(strExcel,strConn);
ds=newDataSet();
myCommand.Fill(ds,tableName);
if(ds!=null)
{
System.Data.DataTabledt=ds.Tables[0];
returndt;
}
else
{
returnnull;
}
conn.Close();
ds.Dispose();
}
#endregion