導航:首頁 > 編程語言 > javacsv

javacsv

發布時間:2022-01-28 18:45:43

『壹』 java對操作csv文件

java">importjava.io.BufferedReader;importjava.io.FileReader;publicclassTest{publicvoidtest(introw,intcol){try{BufferedReaderreader=newBufferedReader(newFileReader("C:\\a.csv"));//換成你的文件名//reader.readLine();//第一行信息,為標題信息,不用,如果需要,注釋掉Stringline=null;intindex=0;while((line=reader.readLine())!=null){Stringitem[]=line.split("");//CSV格式文件為逗號分隔符文件,這里根據逗號切分if(index==row-1){if(item.length>=col-1){Stringlast=item[col-1];//這就是你要的數據了System.out.println(last);}}//intvalue=Integer.parseInt(last);//如果是數值,可以轉化為數值index++;}}catch(Exceptione){e.printStackTrace();}}/***@paramargs*/publicstaticvoidmain(String[]args){Testtest=newTest();test.test(3,2);}}你的數據格式有問題,空格的個數不確定,沒法每行用空格分隔。以下是我調整後的數據格式每行的數據以一個空格分隔,test方法傳入的參數一次是,行,列:1電機12WBS23PID34CP5社供出6原価実績7社供WC8外注費9直材費10自家製品11直経費12その他13注殘14注殘

『貳』 java 關於csv文件

希望對你有用
UTF8轉換成GB2312當我們在基於HTTP協議的JSP或Servlet的應用中獲取數據或發送請求時,JVM會把輸送的數據編碼成UTF8格式。如果我們直接從HTTP流中提取中文數據,提取的結果為「????」(可能更多問號),為轉換成我們能夠理解的中文字元,我們需要把UTF8轉換成GB2312,藉助ISO-8859-1標准編碼能夠輕易的實現,下面的代碼實現了這一功能:

byte [] b;
String utf8_value;
utf8_value = request.getParameter("NAME");//從HTTP流中取"NAME"的UTF8數據
b = utf8_value.getBytes("8859_1"); //中間用ISO-8859-1過渡
String name = new String(b, "GB2312"); //轉換成GB2312字元

在知道流長度的情況下將輸入流轉換成位元組數組 Java中的輸入流抽象類InputStream有int read(byte[] b, intoff, int len)方法,參數中byte[] b是用來存放從InputStream中讀取的數據,intoff指定數組b的偏移地址,也就是數組b的起始下標,intlen指定需要讀取的長度,方法返回實際讀取的位元組數。剛學Java的朋友可能要說:先定義一個與流長度等長的位元組數組,調用read方法,指定起始下標為0,指定讀取長度與數組長度等長,不是一下子可以讀出來了嗎?說的沒錯,筆者曾經也試著這樣讀取數據,但後來發現在讀取網路數據時很不安全,我們想想在網路上獲取數據可能並沒那麼流暢,數據流的傳送可能會斷斷續續,所以並不能保證一次就能讀取全部數據,特別是在讀取大容量數據時更是如此,所以我們必須在讀取數據時檢測實際讀到的長度,如果沒有讀完已知長度的數據就應該再次讀取,以此循環檢測,直到實際讀取的長度累加與已知的長度相等,下面的代碼實現了這一功能:

ServletInputStream inStream = request.getInputStream(); //取HTTP請求流
int size = request.getContentLength(); //取HTTP請求流長度
byte[] buffer = new byte[size]; //用於緩存每次讀取的數據
byte[] in_b = new byte[size]; //用於存放結果的數組
int count = 0;
int rbyte = 0;
while (count < size) { //循環讀取
rbyte = inStream.read(buffer); //每次實際讀取長度存於rbyte中
for(int i=0;i
in_b[count + i] = buffer;
}
count += rbyte;
}

在不知道流長度的情況下將輸入流轉換成位元組數組前面介紹了已知流長度的情況下的轉換方法,那麼當我們不知道流有多長時,也就是說不能確定轉換後的位元組數組有多大時,該怎麼處理呢?筆者查看了JDK文檔之後發現ByteArrayOutputStream有一個byte[]toByteArray()方法,該方法會自動創建一個位元組數組,然後返回。於是就巧妙的用ByteArrayOutputStream來作中間過渡實現轉換,其它處理跟上面所介紹已知長度的情況差不多。假設需要被轉換的流已經放在inStream里了,我們可以用如下的代碼實現這一功能:

ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
byte[] buff = new byte[100]; //buff用於存放循環讀取的臨時數據
int rc = 0;
while ((rc = inStream.read(buff, 0, 100)) > 0) {
swapStream.write(buff, 0, rc);
}
byte[] in_b = swapStream.toByteArray(); //in_b為轉換之後的結果

『叄』 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文件

我來說一下大致的實現步驟,具體實現需要你自己去寫了
1.檢索數據,檢索到的數據假定為一個list
2.你需要自己寫一個objectToString之類的方法來把檢索到的數據轉化為一個String或StringBuffer,就是往各欄位間插",",往個記錄間插"\r\n",如此這類的轉換,假定轉換好的字元串為strResult.
3.然後用下面的代碼寫在後台來控制下載,文件名那裡你可以把時間格式控制好,或者用前台傳過來的參數做名字。
response.setContentType("application/download;charset=UTF-8");
response.setHeader("Content-disposition","attachment;filename=\"" +new Date()+".csv\"");

OutputStream o = response.getOutputStream();
byte b[] = strResult.getBytes();
try{
o.write(b);
}catch(IOException e){
e.printStackTrace();
}finally{
o.close();
}

『伍』 用JAVA如何實現寫CSV文件

看你用來做什麼了, 該功能可簡單,可復雜:
CSV就是逗號分隔文件,每一行的內容都用逗號分開。

最簡單的辦法就是直接組合成CSV每行的逗號分隔內容, 輸入到文件中就行了。

『陸』 java怎麼對csv文件進行排序

CSV是以逗號分隔的TXT文本,只要按正常讀取TXT方式讀取,然後split逗號,這時得到的最後一個數據就是分數。如果60分以上統計出來,其它數據忽略。

『柒』 java操作csv文件

看樓主比較懂,
參閱RandomAccessFile類
先用seek(long pos)把指針指向文件最後
然後視你的數據用
writeBytes(String s) //有漢字什麼的
writeChars(String s) //一般的字元串
writeUTF(String str) //有UTF-8的字元
寫入數據

『捌』 java讀取CSV文件

可以通過流的形式讀取到所有內容,之後在轉換成元素的形式進行實現。舉例:
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.*;

public class Test{
public static void main(String[] args) {
Hashtable<String, String[]> dict = new Hashtable<String, String[]>();
try {
BufferedReader reader = new BufferedReader(new FileReader("test.csv"));
String line = null;
while((line=reader.readLine())!=null){
String item[] = line.split(",");
String item2[] = new String[19];
System.array(item,1,item2,0,19);
dict.put(item[0],item2);
}
Enumeration e2 = dict.keys();
while (e2.hasMoreElements()) {
String key = (String) e2.nextElement();
System.out.println(key);
String[] dd = (String[])dict.get(key);
for (int i=0;i<dd.length;i++) {
System.out.print(dd[i]+"\t");
}
System.out.println();
}
}
catch (Exception e) {
e.printStackTrace();
}
}
}

『玖』 java輸出csv,0的處理問題

方法1,用java.text.DecimalFormat;
DecimalFormat format = new DecimalFormat("00000");
String s = format.format(3);
上面的結果s就會是「00003」了
"00000"表示用5個整數位來表示數字

方法2,自己寫format
你現在這個需求很簡單,大不了自己先用String.valueOf(int)把數字轉換成String,再在返回的字元串前面加上相應個數的0就可以了~
============================================================
那有什麼區別?不過是把五位的format改成3位的format("000"這樣)
至於excel,我倒不明白了。。我本來不知道csv是什麼,剛剛才去查的,的確是和excel有關,但是還是不知道你的需求是什麼。你寫的java程序你是可以控制的。但excel自然有他自己的讀取和寫入文件的方式,你是改不了的吧。如果你要讓excel打開後顯示你需要的格式,那恕我無能為力。。這應該是excel使用的問題了,不是java編程的問題~像我們在excel中輸入身份證號的時候,有時不也會變成科學計數法嗎,你可能需要設置下他的數字格式~
============================================================
哦,這樣啊,長見識~~莫非加了tab,excel就不把他認作是數字,而是認做為字元串了。。

『拾』 java要怎麼修改csv中指定行列位置的值

java讀取csv文件,按照指定格式: import java.io.IOException; import java.nio.charset.Charset; import java.util.ArrayList; import com.csvreader.CsvReader; import com.csvreader.CsvWriter; /** * 讀取CSV文件 * 所謂"CSV",是Comma Separated Value(逗號分隔值)的英文縮寫,通常都是純文本文件。 * 可以看成資料庫程序與電子表格之間一種中間通信文件,資料庫可以導出。csv格式,excel也可以導入並打開。csv文件,例子如下 * sj_mino一00一.jpg,漆一5二吧二,四FB55FE吧, * sj_mino一00二.jpg,四漆一二吧9,9三二0三C5C, * sj_mino一00三.jpg,四5一9二9,C四E吧0四陸漆, * */ public class CSVDeal{ public static void main(String[] args) { try { String[] stringList; String csvFilePath = "C:\\Users\\Administrator\\Desktop\\二0一四0二二漆一三59三陸.csv"; String sourceFileString= "C:\\Users\\Administrator\\Desktop\\test.csv"; CsvReader reader = new CsvReader(csvFilePath); //默認是逗號分隔符,UTF-吧編碼 CsvWriter writer = new CsvWriter(sourceFileString); /* * readRecord()判斷是否還有記錄,getValues()讀取當前記錄,然後指針下移 */ reader.readRecord(); writer.writeRecord(reader.getValues()); //讀取表頭 /* * 逐行讀取,以免文件太大 * 處理表頭後面的數據,這里是在第一二列數據統一加前綴"V" */ while(reader.readRecord()){ stringList = reader.getValues(); stringList[一一] = 'V' + stringList[一一]; writer.writeRecord(stringList); } reader.close(); writer.close(); }catch(Exception ex){ System.out.println(ex); } }

閱讀全文

與javacsv相關的資料

熱點內容
葯業公司招程序員嗎 瀏覽:968
毛選pdf 瀏覽:657
linuxexecl函數 瀏覽:725
程序員異地戀結果 瀏覽:372
剖切的命令 瀏覽:226
干什麼可以賺錢開我的世界伺服器 瀏覽:288
php備案號 瀏覽:988
php視頻水印 瀏覽:166
怎麼追程序員的女生 瀏覽:486
空調外壓縮機電容 瀏覽:78
怎麼將安卓變成win 瀏覽:459
手機文件管理在哪兒新建文件夾 瀏覽:724
加密ts視頻怎麼合並 瀏覽:775
php如何寫app介面 瀏覽:804
宇宙的琴弦pdf 瀏覽:396
js項目提成計算器程序員 瀏覽:944
pdf光子 瀏覽:834
自拍軟體文件夾名稱大全 瀏覽:328
程序員留學移民 瀏覽:52
梁中間部位箍筋加密區 瀏覽:119