當前位置:首頁 » 編程語言 » java導出csv

java導出csv

發布時間: 2024-11-02 17:10:04

❶ 用java導出CSV的問題!!!

我也正在做這樣的導出問題

1.如果數據中本身存在換行符號,那麼這條數據就會自動拆成2行

我想你只能在接受數據的時候,手動的把數據中的換行符號替換掉或者去掉

2.還有,這個導出的CSV文件的作用是往其他資料庫裡面導入,是不是用下面的格式也可以?

我想csv的格式沒有那麼多的限制,只要你在導入到資料庫的時候能得到你想要的數據就行了吧

❷ Java 徒手導出csv文件

導述

在日常編程中,我們常常需要導出CSV文件。通常情況下,我們會藉助第三方工具包來實現這一功能,因為它們提供了便捷且功能豐富的API。然而,在某些項目中,我們可能不希望引入額外的依賴。此時,直接通過Java代碼生成CSV文件便成為了一種更簡單、更靈活的解決方案。

在深入討論如何直接生成CSV文件之前,讓我們先來了解一下CSV格式的基本知識。CSV是一種常見的純文本格式,主要用於存儲表格數據,包括數字和文本。文件由多條記錄組成,每條記錄由多個欄位通過特定字元分隔。最常用的分隔符是逗號或製表符,但實際應用中,分隔符可以根據需要自由選擇。CSV文件通常具有較高的兼容性,可以在多種環境中輕松讀取。

為了實現CSV文件的生成,我們可以利用Java中的流類,特別是PrintWriter。PrintWriter是一個字元類型的列印輸出流,它繼承自Writer介面,提供了多種寫入字元的方法。通過使用PrintWriter,我們可以方便地將數據寫入CSV文件,從而實現數據的導出。

實現流程主要包括以下幾個步驟:

1. **選擇編碼**:在生成CSV文件時,我們需要注意編碼問題,以確保輸出的數據能夠正確顯示,尤其是在處理包含非英文字元(如中文)的情況下。在本文中,我們將選擇GBK編碼,以防止中文字元出現亂碼。

2. **創建輸出流**:初始化PrintWriter對象,指定輸出流和編碼方式,然後使用對象的write方法來輸出數據。

3. **編寫數據**:將數據按照CSV格式的規則組織起來,每一項數據之間通過指定的分隔符(如逗號)進行分隔,每一條記錄結束時使用換行符進行分隔。

總結

在編程實踐中,我們常常依賴各種工具和庫來提高效率,但了解和掌握基礎編程技能對於個人能力的提升至關重要。過分依賴第三方工具可能會導致我們失去自主解決問題的能力。通過自行嘗試和實踐,我們可以更好地理解和應用這些工具,從而避免在需要時陷入困境。

總之,學習如何通過Java代碼生成CSV文件不僅能夠幫助我們掌握基礎的文件操作技能,還能增強我們對編程語言底層邏輯的理解,進而提升編程能力。在掌握基礎技能的同時,我們也應該鼓勵自己勇於嘗試,不斷突破,以提高解決問題的靈活性和創造性。

❸ 各位大蝦:用java代碼生成的csv文件怎麼設置單元格長度,及居中之類的信息(時間太長顯示成########了)。

那個顯示成### 是你單元格寬度太小,顯示不下而已,用滑鼠多拽大一些就可以了
csv只保存內容,不管顯示方式,無法設值你說的那些顯示相關的屬性
csv值保存表格的內容

❹ 需要一份500行的java程序,期末大作業,最好帶詳細注釋。

    Java生成CSV文件簡單操作實例

    CSV是逗號分隔文件(Comma Separated Values)的首字母英文縮寫,是一種用來存儲數據的純文本格式,通常用於電子表格或資料庫軟體。在 CSV文件中,數據「欄」以逗號分隔,可允許程序通過讀取文件為數據重新創建正確的欄結構,並在每次遇到逗號時開始新的一欄。如:

    123
  • 1,張三,男2,李四,男3,小紅,女
  • Java生成CSV文件(創建與導出封裝類)

package com.yph.omp.common.util;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.LinkedHashMap;

import java.util.List;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;

import org.junit.Test;

/**

* Java生成CSV文件

*/

public class CSVUtil {

/**

* 生成為CVS文件

*

* @param exportData

* 源數據List

* @param map

* csv文件的列表頭map

* @param outPutPath

* 文件路徑

* @param fileName

* 文件名稱

* @return

*/

@SuppressWarnings("rawtypes")

public static File createCSVFile(List exportData, LinkedHashMap map,

String outPutPath, String fileName) {

File csvFile = null;

BufferedWriter csvFileOutputStream = null;

try {

File file = new File(outPutPath);

if (!file.exists()) {

file.mkdir();

}

// 定義文件名格式並創建

csvFile = File.createTempFile(fileName, ".csv",

new File(outPutPath));

// UTF-8使正確讀取分隔符","

csvFileOutputStream = new BufferedWriter(new OutputStreamWriter(

new FileOutputStream(csvFile), "GBK"), 1024);

// 寫入文件頭部

for (Iterator propertyIterator = map.entrySet().iterator(); propertyIterator

.hasNext();) {

java.util.Map.Entry propertyEntry = (java.util.Map.Entry) propertyIterator

.next();

csvFileOutputStream

.write(""" + (String) propertyEntry.getValue() != null ? (String) propertyEntry

.getValue() : "" + """);

if (propertyIterator.hasNext()) {

csvFileOutputStream.write(",");

}

}

csvFileOutputStream.newLine();

// 寫入文件內容

for (Iterator iterator = exportData.iterator(); iterator.hasNext();) {

Object row = (Object) iterator.next();

for (Iterator propertyIterator = map.entrySet().iterator(); propertyIterator

.hasNext();) {

java.util.Map.Entry propertyEntry = (java.util.Map.Entry) propertyIterator

.next();

/*-------------------------------*/

//以下部分根據不同業務做出相應的更改

StringBuilder sbContext = new StringBuilder("");

if (null != BeanUtils.getProperty(row,(String) propertyEntry.getKey())) {

if("證件號碼".equals(propertyEntry.getValue())){

//避免:身份證號碼 ,讀取時變換為科學記數 - 解決辦法:加 (用Excel打開時,證件號碼超過15位後會自動默認科學記數)

sbContext.append(BeanUtils.getProperty(row,(String) propertyEntry.getKey()) + " ");

}else{

sbContext.append(BeanUtils.getProperty(row,(String) propertyEntry.getKey()));

}

}

csvFileOutputStream.write(sbContext.toString());

/*-------------------------------*/

if (propertyIterator.hasNext()) {

csvFileOutputStream.write(",");

}

}

if (iterator.hasNext()) {

csvFileOutputStream.newLine();

}

}

csvFileOutputStream.flush();

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

csvFileOutputStream.close();

} catch (IOException e) {

e.printStackTrace();

}

}

return csvFile;

}

/**

* 下載文件

*

* @param response

* @param csvFilePath

* 文件路徑

* @param fileName

* 文件名稱

* @throws IOException

*/

public static void exportFile(HttpServletRequest request,

HttpServletResponse response, String csvFilePath, String fileName)

throws IOException {

response.setCharacterEncoding("UTF-8");

response.setContentType("application/csv;charset=GBK");

response.setHeader("Content-Disposition", "attachment; filename="

+ new String(fileName.getBytes("GB2312"), "ISO8859-1"));

InputStream in = null;

try {

in = new FileInputStream(csvFilePath);

int len = 0;

byte[] buffer = new byte[1024];

OutputStream out = response.getOutputStream();

while ((len = in.read(buffer)) > 0) {

out.write(buffer, 0, len);

}

} catch (FileNotFoundException e1) {

System.out.println(e1);

} finally {

if (in != null) {

try {

in.close();

} catch (Exception e1) {

throw new RuntimeException(e1);

}

}

}

}

/**

* 刪除該目錄filePath下的所有文件

*

* @param filePath

* 文件目錄路徑

*/

public static void deleteFiles(String filePath) {

File file = new File(filePath);

if (file.exists()) {

File[] files = file.listFiles();

for (int i = 0; i < files.length; i++) {

if (files[i].isFile()) {

files[i].delete();

}

}

}

}

/**

* 刪除單個文件

*

* @param filePath

* 文件目錄路徑

* @param fileName

* 文件名稱

*/

public static void deleteFile(String filePath, String fileName) {

File file = new File(filePath);

if (file.exists()) {

File[] files = file.listFiles();

for (int i = 0; i < files.length; i++) {

if (files[i].isFile()) {

if (files[i].getName().equals(fileName)) {

files[i].delete();

return;

}

}

}

}

}

@SuppressWarnings({ "unchecked", "rawtypes" })

@Test

public void createFileTest() {

List exportData = new ArrayList<Map>();

Map row1 = new LinkedHashMap<String, String>();

row1.put("1", "11");

row1.put("2", "12");

row1.put("3", "13");

row1.put("4", "14");

exportData.add(row1);

row1 = new LinkedHashMap<String, String>();

row1.put("1", "21");

row1.put("2", "22");

row1.put("3", "23");

row1.put("4", "24");

exportData.add(row1);

LinkedHashMap map = new LinkedHashMap();

map.put("1", "第一列");

map.put("2", "第二列");

map.put("3", "第三列");

map.put("4", "第四列");

String path = "d:/export";

String fileName = "文件導出";

File file = CSVUtil.createCSVFile(exportData, map, path, fileName);

String fileNameNew = file.getName();

String pathNew = file.getPath();

System.out.println("文件名稱:" + fileNameNew );

System.out.println("文件路徑:" + pathNew );

}

}

//註:BeanUtils.getProperty(row,(String) propertyEntry.getKey()) + " " ,只為解決數字格式超過15位後,在Excel中打開展示科學記數問題。

❺ java如何導出csv文件 用戶點擊導出可以導出到他想保存的地方

這種通常是如下做法:
1:提供查詢頁面,讓用戶輸入查詢條件
2:根據查詢條件到資料庫去檢索,並獲取到對應的記錄
3:生成csv到本地(可以省略,生成臨時文件到tomcat的臨時目錄)
4:用讀取文件,用response寫流到客戶端

❻ java將查詢數據導出成csv文件的問題

生成.csv文件有第三方包javacsv.jar,例子網上找,很簡單
提示用戶下載,用流實現,網路上更多
提供個JSP的例子給你。
<%@ page language="java" pageEncoding="UTF-8"%>
<%
// example:
// <a href="download.jsp?p=img/test.gif">download image</a>

String path = request.getParameter("p");
String name = request.getParameter("name");
String root = getServletContext().getRealPath(path);
if (name == null) {
int index = path.lastIndexOf("/");
if (index >= 0) {
name = path.substring(index + 1);
} else {
name = path;
}
}

response.setContentType("unknown");
response.addHeader("content-disposition", "filename=\"" + name + "\"");

java.io.OutputStream os = response.getOutputStream();
try {
java.io.FileInputStream fis = new java.io.FileInputStream(root);

byte[] b = new byte[1024];
int i = 0;

while ( (i = fis.read(b)) > 0 ) {
os.write(b, 0, i);
}

fis.close();
os.flush();
os.close();
}
catch ( Exception e )
{
e.printStackTrace();
}
out.clear();
out = pageContext.pushBody();
%>

❼ java導出大數據量到csv文件,資料庫大概有4、5W條數據,性能很慢,求各位大俠給個好方法

多線程啊,按照rownumber,比方說每5000或2000條開個線程,往外讀。

熱點內容
sql多行轉多列 發布:2024-11-02 19:17:52 瀏覽:118
linuxftp文件夾許可權 發布:2024-11-02 19:17:03 瀏覽:898
數組插入java 發布:2024-11-02 19:10:20 瀏覽:617
安卓跟蘋果哪個好 發布:2024-11-02 19:04:52 瀏覽:95
王力宏超級訪問 發布:2024-11-02 19:02:25 瀏覽:669
i主題文件夾 發布:2024-11-02 18:52:55 瀏覽:536
誅仙3伺服器是紫色是什麼意思 發布:2024-11-02 18:50:46 瀏覽:665
linux復制整個文件夾 發布:2024-11-02 18:38:01 瀏覽:964
樹莓派3能編譯嗎 發布:2024-11-02 18:37:06 瀏覽:729
androidgif緩存 發布:2024-11-02 18:32:50 瀏覽:343