当前位置:首页 » 编程语言 » 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条开个线程,往外读。

热点内容
多巴胺3mg静脉注射怎么配置 发布:2024-11-02 19:25:50 浏览:617
源码之城 发布:2024-11-02 19:24:43 浏览:512
国军标环境存储要求 发布:2024-11-02 19:23:04 浏览:106
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