本文目錄一覽:
- 1、java jsp中如何實現下載.csv文件、並自動保存到指定的文件夾下
- 2、JSP頁面將查詢結果導出為CSV文件
- 3、怎麼實現在jsp頁面讀取csv文件的內容
- 4、前台jsp獲取查詢到的資料庫數據,導出為csv文件(幾十萬行)如何讓處理?
- 5、關於用jsp編寫,導出資料庫中文件為”.csv”文件問題
java jsp中如何實現下載.csv文件、並自動保存到指定的文件夾下
你這種想法不太現實
首先你客戶端要跟伺服器交互是要客戶端主動發送請求
然後建立連接去操作
就算你不手動選保存路徑,那你還是要寫代碼去實現這個過程的
實現方式就兩種了
bs跟cs架構均可
思路是一樣的
BS:
servlet讀取本地文件,然後以流的形式輸出就行,注意要設置輸出的MINE類型也就是contentType
你客戶端寫個程序通過http訪問這個servlet,然後通過程序去保存到你移動硬碟
如果是cs架構的話,你的服務端監聽socket
如果有客戶端連接那就等待接收命令或者是直接往客戶端傳文件的二進位流
客戶端:已啟動就連接服務端,發送文件請求,處理回傳的文件位元組流
JSP頁面將查詢結果導出為CSV文件
你好運氣啊~~我前幾天剛做過這個~~~
下面這大段代碼是2個方法 除了在第一個方法里將文件名和要寫入的表頭改成你自己的之外其餘照搬就可以了 最後只需用在你的主方法里調用這兩個方法就行了
不易理解的地方我做了注釋 祝你成功~~~
public File putOutTaskToExcelFile(ListE getPutOutTaskResult) {
//在我的代碼里,getPutOutTaskResult是我需要導出的信息列表,你換成你的就行
BufferedWriter out = null;
int random = (int) (Math.random() * 1000 + 1);
//這個隨機數只是為了讓後面生成的文件名不重複而已
File excelFile = null;
try {
excelFile = File.createTempFile(“你的文件名” + random,”.csv”);
//生成一個csv臨時文件
excelFile.deleteOnExit();
} catch (IOException e1) {
e1.printStackTrace();
}
int i = 1;
try {
out = new BufferedWriter(new FileWriter(excelFile));
out
.write(“序號” + “,” + “用戶號碼” + “,” + “是否成功” + “,” + “失敗原因”
+ “,”);//換成你需要的表頭
out.newLine();
IteratorE resultIterator = getPutOutTaskResult.iterator();
while (resultIterator.hasNext()) {
E e = resultIterator.next();
out.write(i + “,” + A + “,”
+ B + “,” + C);
//A、B、C等等都換上你自己的就可以 i是一個自增序號
out.newLine();
i++;
}
out.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return excelFile;
}
/**
* 將伺服器端生成的Excel文件提供給客戶端下載
*
* @param request
* @param response
* @param tempFile
*/
private void download(HttpServletRequest request,
HttpServletResponse response, File tempFile) {
String filenamedownload = tempFile.toString();
String filenamedisplay = tempFile.getName();
try {
filenamedisplay = URLEncoder.encode(filenamedisplay, “UTF-8”);
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
response.addHeader(“Content-Disposition”, “attachment;filename=”
+ filenamedisplay);
OutputStream output = null;
FileInputStream fis = null;
try {
output = response.getOutputStream();
fis = new FileInputStream(filenamedownload);
byte[] b = new byte[1024];
int i = 0;
while ((i = fis.read(b)) 0) {
output.write(b, 0, i);
}
output.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
fis = null;
}
if (output != null) {
try {
output.close();
} catch (IOException e) {
e.printStackTrace();
}
output = null;
}
}
}
怎麼實現在jsp頁面讀取csv文件的內容
前台可以通過JS過濾文件類型,如果是CSV,允許上傳,如果不是,給出提示。 後台先上傳文件,如果成功,記錄成功數量,失敗記錄失敗數量。(這裡記住要先上傳在解析, 外在因素可能導致多種失敗的情況。) 具體信息可以讓他下載後查看。
前台jsp獲取查詢到的資料庫數據,導出為csv文件(幾十萬行)如何讓處理?
一次性長時間佔用鏈接很容易超時的,
所以我一般採用ajax一頁50條數據,分頁處理,處理完的數據給個標識,
文件的寫入使用補充的形式不用覆蓋的方式如
FileWriter a=new FileWriter(“d:/abc.csv”); 改成 FileWriter a=new
FileWriter(“d:/abc.csv”,true);這樣就不會覆蓋原來寫入的內容。
先在伺服器上生成csv文件再提供給用戶下載。
關於用jsp編寫,導出資料庫中文件為”.csv”文件問題
設置下response就可以了吧。
response.setContentType(“application/csv”);
response.setHeader(“Content-Disposition”, “inline; filename=”result.csv””);
關於文件下載你應該做過吧。只要設置了response的輸出類型 下載都是同樣的道理
下面的例子是沒有下載功能的。
String queryResult = …;
response.setContentType(“application/csv”);
response.setHeader(“Content-Disposition”, “inline; filename=”result.csv””);
PrintWriter out = new PrintWriter(new OutputStreamWriter(
response.getOutputStream(), “UTF-8”));
out.print(queryResult);
out.close();
—————————-
那就比較鬱悶了~下載可以有多種實現方式的。建議你去找下符合你當前項目的下載示例看看。
只要你能下載了 那導出任何格式的文件都非常簡單的。
原創文章,作者:WXDI,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/148924.html