1. 程式人生 > >使用Apache POI技術把資料庫中的資料匯入Excel表

使用Apache POI技術把資料庫中的資料匯入Excel表

首先還是匯入需要的jar包,上一篇部落格裡有

有兩種實現方法

方法一,

第一步:查詢所有的分割槽資料

第二步:使用POI將資料寫到Excel檔案中

第三步:使用輸出流進行檔案下載

/**
	 * 分割槽資料匯出功能
	 * @throws IOException 
	 */
	public String exportXls() throws IOException{
		//第一步:查詢所有的分割槽資料
		List<Subarea> list = subareaService.findAll();
		
		//第二步:使用POI將資料寫到Excel檔案中
		//在記憶體中建立一個Excel檔案
		HSSFWorkbook workbook = new HSSFWorkbook();
		//建立一個標籤頁
		HSSFSheet sheet = workbook.createSheet("分割槽資料");
		//建立標題行
		HSSFRow headRow = sheet.createRow(0);
		headRow.createCell(0).setCellValue("分割槽編號");
		headRow.createCell(1).setCellValue("開始編號");
		headRow.createCell(2).setCellValue("結束編號");
		headRow.createCell(3).setCellValue("位置資訊");
		headRow.createCell(4).setCellValue("省市區");
		
		for (Subarea subarea : list) {
			HSSFRow dataRow = sheet.createRow(sheet.getLastRowNum() + 1);
			dataRow.createCell(0).setCellValue(subarea.getId());
			dataRow.createCell(1).setCellValue(subarea.getStartnum());
			dataRow.createCell(2).setCellValue(subarea.getEndnum());
			dataRow.createCell(3).setCellValue(subarea.getPosition());
			dataRow.createCell(4).setCellValue(subarea.getRegion().getName());
		}
		
		//第三步:使用輸出流進行檔案下載(一個流、兩個頭)
		
		String filename = "分割槽資料.xls";
		String contentType = ServletActionContext.getServletContext().getMimeType(filename);
		ServletOutputStream out = ServletActionContext.getResponse().getOutputStream();
		ServletActionContext.getResponse().setContentType(contentType);
		
		//獲取客戶端瀏覽器型別
		String agent = ServletActionContext.getRequest().getHeader("User-Agent");
		filename = FileUtils.encodeDownloadFilename(filename, agent);
		ServletActionContext.getResponse().setHeader("content-disposition", "attachment;filename="+filename);
		workbook.write(out);
		return NONE;
	}
附:FileUtils類
import java.io.IOException;
import java.net.URLEncoder;
import sun.misc.BASE64Encoder;

public class FileUtils {
	/**
	 * 下載檔案時,針對不同瀏覽器,進行附件名的編碼
	 * 
	 * @param filename
	 *            下載檔名
	 * @param agent
	 *            客戶端瀏覽器
	 * @return 編碼後的下載附件名
	 * @throws IOException
	 */
	public static String encodeDownloadFilename(String filename, String agent)
			throws IOException {
		if (agent.contains("Firefox")) { // 火狐瀏覽器
			filename = "=?UTF-8?B?"
					+ new BASE64Encoder().encode(filename.getBytes("utf-8"))
					+ "?=";
			filename = filename.replaceAll("\r\n", "");
		} else { // IE及其他瀏覽器
			filename = URLEncoder.encode(filename, "utf-8");
			filename = filename.replace("+"," ");
		}
		return filename;
	}
}



方法二,

第一步:查詢所有的分割槽資料

第二步:查詢結束進行頁面跳轉,在跳轉的頁面進行檔案下載。

	//查詢所有
	public String findAll() throws IOException{
		
		subs=ss.findAll();

		return "findAll";
	}
跳轉後的jsp頁面
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<%
	response.setContentType("application/vnd.ms-excel");/*作用是使客戶端瀏覽器,區分不同種類的資料,並根據不同的MIME呼叫瀏覽器內不同的程式嵌入模組來處理相應的資料。 */

	response.setHeader("Content-Disposition", "inline;filename=excel.xls");/*設定響應頭資訊,設定傳送到前端瀏覽器時的文件名為excel.xls,讓前端瀏覽器以為接收到一個excel文件
*/
%>
<body>
<table>
	<thead>
		<tr></tr>  
	</thead>
	<tbody>
	<c:forEach items="${subs }" var="sub">
		<tr>
			<td>${sub.id }</td>
			<td>${sub.decidedzone }</td>
			<td>${sub.region.city }</td>
			<td>${sub.addresskey }</td>
			<td>${sub.endnum }</td>
			<td>${sub.single }</td>
			<td>${sub.position }</td>
		</tr>
		</c:forEach>
	</tbody>
</table>
</body>
</html>

需要注意,使用方法二要保證電腦上有Microsoft Excel軟體,否則可能會下載失敗。


相關推薦

使用Apache POI技術資料庫資料匯入Excel

首先還是匯入需要的jar包,上一篇部落格裡有 有兩種實現方法 方法一, 第一步:查詢所有的分割槽資料 第二步:使用POI將資料寫到Excel檔案中 第三步:使用輸出流進行檔案下載 /** *

SpringMVC 實現POI讀取Excle檔案資料匯入資料庫(上傳)、匯出資料庫中資料到Excle檔案(下載)

package com.shiliu.game.utils; import java.io.OutputStream; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; import

一個php檔案就可以資料庫資料匯出Excel表格

資料庫內容太多,複製貼上太麻煩?那就用程式碼實現把,把程式碼寫好了,匯出還不容易嗎,訪問即可匯出。 excel.php &lt;?php error_reporting(E_ALL ^ E_DEPRECATED); $localhost = '資料庫地址'; $dbnam

springboot實現資料庫資料匯出Excel功能

功能介紹        網上查找了一堆的資料匯出程式碼,可能是自己基礎比較薄弱的原因還是別的什麼原因,導致一直沒有執行成功,就算是執行成功的,結果也是差強人意。在此總結一下自己借鑑別人已經經過自己整合

C#txt的資料匯入excel,用逗號分隔

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text;

通過web伺服器訪問MySQL資料庫,並資料庫的某張解析成xml格式輸出到瀏覽器

可以先想象一下,客戶端用到遠端資料庫中的資訊比如Menu表中的資訊,怎麼獲取呢?可以通過web伺服器獲取。這就需要寫一個繼承 HttpServlet的抽象類,並且重寫doGet()和doPost()方法。    下面就是此類的具體實現: public class Updat

POI技術匯出資訊到.xls .xlsx Excel

2、Controller層// 單號資訊service @Autowired public OrderService orderService ; //服務層改為自己的 /** * 匯出訂單資訊到Excel表 * @author Justin */ @RequestMapping("o

Java將Excel表格資料匯入資料庫

        上一節介紹了Java將資料庫表中資料匯出至Excel表格,那麼本節來介紹它的逆過程,也就是將Excel表格中的資料逐行匯入資料庫中的表中,依然需要使用Apache的POI,上一節已經說過也附了這個jar包的下載地址,這一節就不過多的說,直接講如

navicate 匯入Excel 資料到 mysql 資料庫出現匯入資料失敗,只能顯示錶頭等情況。

是由於當初建庫的時候沒有設定預設的編碼格式,就會導致匯入Excel(含有中文)失敗; 失敗的建庫語句:               create database mydatabase; 正確的建庫語句:              create database

postgresql 資料庫資料匯入匯出(簡單操作+示例)

$ su postgresql &nbsp; #切換到psql使用者下</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-

spring-boot使用JDBC技術資料庫資料

直接上程式碼把 1,目錄結構 2,程式碼 結果:返回的是一個一維陣列。 如果把資料庫中所有資料以多維陣列形式返回,就要使用到map對映技術,如下所示: 第二種:設定資料庫帳號密碼的方法 第三鍾設定資料庫帳號密碼

【轉載】怎樣Oracle的資料匯入到SQLServer2005

怎樣把Oracle的資料匯入到SQLServer2005中 例子:把Oracle的CH330300資料庫的資料匯入到SQLServer2005的Temp資料庫 在本機測試一直沒有成功,一直顯示各種錯誤,網上查詢各種方法無果,下載了ORACLE WIN7 64位客戶端也沒有解決問題,根本就看不到ORACLE的

xml與資料庫資料匯入匯出

 這是我一個晚上做出來的,因為要去做其他的專案,所以只實現了對特定資料庫的xml操作,不過我覺得這是學習xml挺不錯的參考程式碼和文件 使用說明: 要先匯入xml.sql資料庫,可以用navicat匯入,然後執行java專案就可以,這是java+mysql資料庫實現的

使用C#將Excel檔案資料匯入SQL Server資料庫

由於專案中加入了新的功能,可以使管理員向資料庫中匯入Excel資料。因此,在商品管理這塊需要對Excel進行操作,在網上查了些資料,根據專案的實際情況進行了一定的優化,這裡簡單的介紹下。 C#程式碼 /// <summary> /// 上傳Excel檔案,並將資

用SQL語句將遠端SQL Server資料庫中表資料匯入到本地資料庫相應的

exec sp_addlinkedserver ‘名稱’,”,’SQLOLEDB’,'遠端資料庫的地址’ exec sp_addlinkedsrvlogin ‘名稱’,'false’,'本地使用者名稱稱’,'遠端使用者名稱稱’,'遠端使用者密碼’ 2、倒入表 insert

怎麼sql server資料匯入mysql本地資料庫

tuimu-dev資料庫是mysql資料庫,下面的sqlserver資料庫是sqlserver的,而我要把sqlserver裡面的AIMSEN_BASE表裡面的accont資料導進來,如下圖:選中tuimu-dev-----然後直接下一步。。。。。。  最後  一個按鈕  開

如何資料庫的String型別的資料在jsp頁面上轉化為date型別的資料

<span style="font-size:18px;">jsp頁面引入:<<a target=_blank href="mailto:%@taglib">%@tagl

在ASP.NET中將Excel檔案資料匯入資料庫並顯示進度條

在ASP.NET中經常會遇到Excel檔案匯入資料庫的問題,遇到資料量比較大的時候,最好顯示進度條。 進度條設計是參考網上某牛人提供的程式碼,利用JS實現的,謝謝這個大牛了(忘記了當時記錄下他的大名了,:()。具體思路:首先將後臺伺服器上ProgressBar.htm 頁面內

惠州學院-資料庫實驗4-資料庫資料檢視的使用

   計算機科學系實驗報告(首頁) 課程名稱 資料庫系統概論 班級 14計科2班 實驗名稱 資料庫中資料檢視的使用

惠州學院-資料庫實驗3-資料庫資料的更新

    計算機科學系實驗報告(首頁) 課程名稱 資料庫系統概論 班級 14計科2班 實驗名稱 資料庫中資料的更新