GVKun编程网logo

如何在将值附加到 Java 中的 CSV 文件时为每次迭代仅附加一行/行(java往csv中追加数据)

2

在这篇文章中,我们将为您详细介绍如何在将值附加到Java中的CSV文件时为每次迭代仅附加一行/行的内容,并且讨论关于java往csv中追加数据的相关问题。此外,我们还会涉及一些关于(react-csv

在这篇文章中,我们将为您详细介绍如何在将值附加到 Java 中的 CSV 文件时为每次迭代仅附加一行/行的内容,并且讨论关于java往csv中追加数据的相关问题。此外,我们还会涉及一些关于(react-csv) 分配具有相同列名但来自不同表的 csv 标题、15、解决 14 中 csv 用 excel 打开乱码的问题 open (''zhihu.csv'',''w'',newline='''',encoding=''ut...、Apache Commons CSV 1.5,读写 CSV 文件的 Java 库、CSV 差异查找器不包括输出文件中的标题 diff.csv 输出:'diff.csv' 想要的输出:问题可能出在哪里:完整代码在这里:GUI空白图片:的知识,以帮助您更全面地了解这个主题。

本文目录一览:

如何在将值附加到 Java 中的 CSV 文件时为每次迭代仅附加一行/行(java往csv中追加数据)

如何在将值附加到 Java 中的 CSV 文件时为每次迭代仅附加一行/行(java往csv中追加数据)

如何解决如何在将值附加到 Java 中的 CSV 文件时为每次迭代仅附加一行/行

我在将数据附加到我的 CSV 文件方面遇到了一些问题。问题是,每当我第二次尝试将数据附加到我的 CSV 文件时,附加到 CSV 文件的第二个值都带有第一个附加值。这就像在附加到 CSV 文件时带来了现有值。因此,由于这个问题,在这个语句中导致数组索引越界异常:cust[read2DStringIndex][newVarIndexer] = fromfile[g]; ,CSV 文件的数据重复现有值以及最新附加值,并且第一个值仅显示在我的 GUI 表中。

CSV 文件:

表格:

这是我编写和读取 CSV 的源代码:

public void writeCustomerCSV(){  // this creates a CSV file which stores the inputs of the user
    try {
        BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\\\Users\\\\RALPH\\\\Documents\\\\Database Java CSV\\\\customers.csv",true)); // when I set append mode to true,cust[read2DStringIndex][newVarIndexer] = fromfile[g] results to index array out of bounds to 10
        StringBuilder sb = new StringBuilder();
        int y;
        for(int x = 0; x < itemTo2D.length; x++){
            if(itemTo2D[x][0] != null){
                for(y = 0; y < itemTo2D[0].length; y++){
                    sb.append(itemTo2D[x][y]);
                    sb.append(",");
                }
            }
            sb.append("-");  //separation for rows
            sb.append(",");  // separation for columns
        }
        bw.write(sb.toString());
        bw.close();
    }
    catch (Exception ex){
    }
}

public void readCustomerCSV(){  // reads the contents of the CSV file 
    String[][] twoDArray = new String[10][7];
    int read2DStringIndex = 0;
    int newVarIndexer = 0;
    DefaultTableModel tblmodelll = (DefaultTableModel) mainTable.getModel();  // table
    String[] fromfile = {};   // 1d string for getting the columns(7 columns) of the CSV file
    int ak = 0;
    int sk = 0;
    try{
        BufferedReader br = new  BufferedReader(new FileReader("C:\\\\Users\\\\RALPH\\\\Documents\\\\Database Java CSV\\\\customers.csv"));
        String line;
        while ((line = br.readLine()) != null){
            fromfile = line.split(",");  //separates the columns by a comma
            for(int c = 0; c < fromfile.length; c++){
                if(fromfile[c].equals("-")){
                    sk = 0;
                    ak++;
                    if(c > 0){
                        if(!fromfile[c-1].equals("-")){
                            id = id + 1;
                        }
                    }
                } else{
                    twoDArray[ak][sk] = fromfile[c];
                    sk++;
                }
            }
        }
    } catch (Exception ex){

    }
    for(int g = 0; g < fromfile.length; g++){  
        if(fromfile[g].equals("-")){   //if there is a presence of a dash,it increments the read2DStringINdex (row index) of the 2D array
            read2DStringIndex++;
            newVarIndexer = 0;
        }
        else{
            cust[read2DStringIndex][newVarIndexer] = fromfile[g];    //cust is the 2D array(declared universal) which is going to display the values to the table
            newVarIndexer++;
        }
    }
    for(int h = 0; h < cust.length; h++){  //prints cust (2D array),just to check what data is being stored
        for(int p = 0; p < cust[0].length; p++){
            System.out.println(cust[h][p] + ",");
        }
    }
    setrowcount = 0;
    for(int r = 0; r < cust.length; r++){
        if(setrowcount == 0){
            tblmodelll.setRowCount(0);
        }
        try{                
            if(cust[r][0].equals("null") == false){  
                tblmodelll.addRow(cust[r]);  //displays the cust(2D array) data to table 
            }
        } catch(Exception e){
            
        }
        setrowcount++; 
    }
}

我的代码结构中是否缺少某些内容,或者我附加值的逻辑不正确? 您的回答确实会帮助我解决这个问题。 非常感谢。

(react-csv) 分配具有相同列名但来自不同表的 csv 标题

(react-csv) 分配具有相同列名但来自不同表的 csv 标题

如何解决(react-csv) 分配具有相同列名但来自不同表的 csv 标题?

我有两个表,订单和阅读器。它们都有列名状态。 现在对于 csv 报告标题,它将是

this.clientsList = [
{label: "Readers Status". key: "status"}
{label: "Orders Status". key: "status",}
]

预期:读者状态的csv标头将显示读者状态,订单状态将显示订单状态 实际:csv 标题将两列都显示为阅读器状态,因为它是“状态”放在首位

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

15、解决 14 中 csv 用 excel 打开乱码的问题 open (''zhihu.csv'',''w'',newline='''',encoding=''ut...

15、解决 14 中 csv 用 excel 打开乱码的问题 open (''zhihu.csv'',''w'',newline='''',encoding=''ut...

解决 14 中 csv 用 excel 打开乱码的问题 ,其实就是在写 csv 的时候把 utf-8 改成 utf-8-sig

open(''zhihu.csv'',''w'',newline='''',encoding=''utf-8-sig'')

这个和 csv 文件的 bom 有关,参考下面信息

 

 

下面是在练习 14 的基础上改一下编码,效果见下面截图

 

 1 #   爬取知乎大v张佳玮的文章“标题”、“摘要”、“链接”,并存储到本地文件
 2 #   URL  https://www.zhihu.com/people/zhang-jia-wei/posts
 3 
 4 import requests
 5 import time
 6 import openpyxl
 7 import csv
 8 
 9 headers = {
10     ''accept'': ''text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3'',
11     ''accept-language'': ''zh-CN,zh;q=0.9'',
12     ''cache-control'': ''max-age=0'',
13     ''cookie'':''__DAYU_PP=iJb63REJnnjIMmBvzNMV65ab0a6aae4f; q_c1=d75d908a13c44b95bd75f27578ad2088|1521641428000|1521641428000; _zap=bec28151-809b-4936-971a-d18f5255add0; tgw_l7_route=f2979fdd289e2265b2f12e4f4a478330; _xsrf=wQDRNSLBlRv3aimMzhUNyqg1BpLUnWAr; d_c0="ABDmoGi2RQ-PTp5SSFyQvDgz_QEjeQfCFgk=|1555156366"; capsion_ticket="2|1:0|10:1555156366|14:capsion_ticket|44:MTBhN2FkYjYyNWEyNDFjYWJiYTk2N2E1YTA1NDE4OTk=|084e15694c6993269b3aab564e9ea5d7983782f4b37dbc4537e000aa7b081901"'',
14     ''upgrade-insecure-requests'': ''1'',
15     ''user-agent'': ''Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36''
16 }
17 
18 res = requests.get(''https://www.zhihu.com/api/v4/members/zhang-jia-wei/articles?include=data%5B*%5D.comment_count%2Csuggest_edit%2Cis_normal%2Cthumbnail_extra_info%2Cthumbnail%2Ccan_comment%2Ccomment_permission%2Cadmin_closed_comment%2Ccontent%2Cvoteup_count%2Ccreated%2Cupdated%2Cupvoted_followees%2Cvoting%2Creview_info%2Cis_labeled%2Clabel_info%3Bdata%5B*%5D.author.badge%5B%3F(type%3Dbest_answerer)%5D.topics&offset=0&limit=20&sort_by=created'',headers=headers)
19 
20 totals = res.json()[''paging''][''totals'']
21 num = 0
22 
23 #   excel 表头部分
24 
25 wb = openpyxl.Workbook()
26 sheet = wb.active
27 sheet.title = ''张佳玮的文章''
28 sheet[''A1''] = ''编号''
29 sheet[''B1''] = ''标题''
30 sheet[''C1''] = ''创建时间''
31 sheet[''D1''] = ''链接''
32 sheet[''E1''] = ''摘要''
33 
34 #   csv 表头部分
35 
36 with open(''zhihu.csv'',''w'',newline='''',encoding=''utf-8-sig'') as csv_file:
37     writer = csv.writer(csv_file)
38     writer.writerow([''编号'',''标题'',''创建时间'',''链接'',''摘要''])
39 
40     for offset in range(0,21,20):
41         res = requests.get(''https://www.zhihu.com/api/v4/members/zhang-jia-wei/articles?include=data%5B*%5D.comment_count%2Csuggest_edit%2Cis_normal%2Cthumbnail_extra_info%2Cthumbnail%2Ccan_comment%2Ccomment_permission%2Cadmin_closed_comment%2Ccontent%2Cvoteup_count%2Ccreated%2Cupdated%2Cupvoted_followees%2Cvoting%2Creview_info%2Cis_labeled%2Clabel_info%3Bdata%5B*%5D.author.badge%5B%3F(type%3Dbest_answerer)%5D.topics&offset={}&limit=20&sort_by=created''.format(offset),headers=headers)
42         html = res.json()
43         items = res.json()[''data'']
44         for item in items:
45             num = num + 1
46             print(num,end=''\t'')
47             timeArray = time.localtime(item[''created''])
48             print(time.strftime("%Y-%m-%d %H:%M:%S",timeArray),end=''\t'')
49             print(item[''title''])
50 
51             #   excel 内容部分
52             sheet.append([num,item[''title''],time.strftime("%Y-%m-%d %H:%M:%S",timeArray),item[''url''],item[''excerpt'']])
53 
54             #   csv 内容部分
55             writer.writerow([num,item[''title''],time.strftime("%Y-%m-%d %H:%M:%S",timeArray),item[''url''],item[''excerpt'']])
56 
57 #   excel 保存到文件
58 wb.save(''zhihu.xlsx'')
 

 

Apache Commons CSV 1.5,读写 CSV 文件的 Java 库

Apache Commons CSV 1.5,读写 CSV 文件的 Java 库

Apache Commons CSV 1.5 已发布(要求 Java 7+),Commons CSV 是一个用来读写各种 Comma Separated Value (CSV) 格式文件的 Java 库。

主要改进记录如下:

  • withNullString value is printed without quotes when QuoteMode.ALL is specified; add QuoteMode.ALL_NON_NULL. PR #17. Fixes CSV-203.

  • Fix outdated comments about FileReader in CSVParser #13. Fixes CSV-194.

  • Fix incorrect method name ''withFirstRowAsHeader'' in user guide. Fixes CSV-193.

  • Negative numeric values in the first column are always quoted in minimal mode. Fixes CSV-171.

  • Update platform requirement from Java 6 to 7. 

  • Do not use RuntimeException in CSVParser.iterator().new Iterator() {...}.getNextRecord(). Fixes CSV-201. 

更多改进内容点此查看。

下载地址:

  • http://commons.apache.org/proper/commons-csv/download_csv.cgi

CSV 差异查找器不包括输出文件中的标题 diff.csv 输出:'diff.csv' 想要的输出:问题可能出在哪里:完整代码在这里:GUI空白图片:

CSV 差异查找器不包括输出文件中的标题 diff.csv 输出:'diff.csv' 想要的输出:问题可能出在哪里:完整代码在这里:GUI空白图片:

如何解决CSV 差异查找器不包括输出文件中的标题 diff.csv 输出:''diff.csv'' 想要的输出:问题可能出在哪里:完整代码在这里:GUI空白图片:

我正在开发一个简单的 Tkinter GUI 程序,该程序显示 2 个 CSV 文件之间的不同行。我希望标题包含在“diff.csv”中

diff.csv 输出:

hits_data,2021-03-23T16:48:50.299Z,2021-03-23T16:48:50.200Z,43.118419647,-77.613418579,176.10,2,00,461.837500,461.837662,0.000,-50.1,0.0,1,hits_data,2021-03-23T16:48:48.914Z,2021-03-23T16:48:48.800Z,176.00,463.612500,463.612390,-72.6,2021-03-23T16:48:54.534Z,2021-03-23T16:48:54.500Z,43.118415833,175.80,445.500000,445.499915,-73.9,5777000.0,2021-03-23T16:49:13.758Z,2021-03-23T16:49:13.700Z,43.118412018,-77.613410950,174.70,395.593750,395.595406,-81.8,2021-03-23T16:49:00.960Z,2021-03-23T16:49:00.900Z,43.118412019,175.70,463.300000,463.299637,-68.3,212000.0,

我需要帮助找到一种方法来编写 csv1 或 csv2 的标头(文件将具有相同的标头)。

''diff.csv'' 想要的输出:

row_type,mission_id,system_id,sys_date_time,gps_date_time,lat_dd,lon_dd,alt_m,gps_speed_mph,gps_status,trans_uid,freq_cluster_mhz,freq_raw_mhz,bandwidth_khz,RSSi_dbm,snr_dbm,modulation,type,duration_s,hit_count,slot_id,slot_status,attention,attention_group,attention_name,call_id
hits_data,

问题可能出在哪里:

读取“csv1.csv”和“csv2.csv”,然后将不同的行写入“diff.csv”。我在这里找到了这个特定的代码:

https://www.edureka.co/community/53649/python-script-to-compare-2-files

def compare1():
    with open(''csv1.csv'',''r'') as file1:
        with open(''csv2.csv'',''r'') as file2:
            difference = set(file1).difference(file2)
            with open(''diff.csv'',''w'') as file_out:
                for row in difference:
                    file_out.write(row)

完整代码在这里:

from tkinter import filedialog
from tkinter import *
import shutil
import pandas as pd
from collections import defaultdict
import csv

def gui():

    def button_browse_callback():

        filename = filedialog.askopenfilename()
        src = filename
        dst = "csv1.csv"
        shutil.copy(src,dst)
        entry.delete(0,END)
        entry.insert(0,filename)

    def button_browse_callback2():
        filename2 = filedialog.askopenfilename()
        src = filename2
        dst = "csv2.csv"
        shutil.copy(src,dst)
        entry2.delete(0,END)
        entry2.insert(0,filename2)

    def compare1():
        with open(''csv1.csv'',''r'') as file1:
            with open(''csv2.csv'',''r'') as file2:
                difference = set(file1).difference(file2)
                with open(''diff.csv'',''w'') as file_out:
                    for row in difference:
                        file_out.write(row)


    def parse1():
        dataset = pd.read_csv(''diff.csv'',header=None)
        ftCol = dataset.iloc[0:,0].values
        write(ftCol)


    def parse2():
        dataset = pd.read_csv(''diff.csv'',header=None)
        ftCol = dataset.iloc[:,4].values
        write(ftCol)

    def parse3():
        dataset = pd.read_csv(''diff.csv'',5].values
        write(ftCol)

    def parse4():
        dataset = pd.read_csv(''diff.csv'',6].values
        write(ftCol)

    def parse5():
        dataset = pd.read_csv(''diff.csv'',7].values
        write(ftCol)

    def parse6():
        dataset = pd.read_csv(''diff.csv'',11].values
        write(ftCol)

    def parse7():
        dataset = pd.read_csv(''diff.csv'',12].values
        write(ftCol)

    def parse8():
        dataset = pd.read_csv(''diff.csv'',14].values
        write(ftCol)

    def parse9():
        dataset = pd.read_csv(''diff.csv'',19].values
        write(ftCol)

    def write(*message,end = "\\n",sep = " "):
        text = ""
        for item in message:
            text += "{}".format(item)
            text += sep
        text += end
        Console.insert(INSERT,text)

    def clear():
        Console.delete(1.0,END)

    root = Tk()
    root.title(''CSV Compare'')
    root.configure(background=''#3A3B3C'',width=10,height=10,padx=6,pady=7)
    frame = Frame(root,background=''#3A3B3C'')
    frame.pack()
    variable = StringVar(root)
    root.resizable(width=False,height=False)


    separator = Frame(root,height=2,bd=1,relief=SUNKEN)
    statusText = StringVar(root)
    statusText.set("Insert CSV files then press Go")
    entry = Entry(root,width=110)
    message = Label(root,textvariable=statusText,background=''lightgrey'')
    entry2 = Entry(root,width=110)
    button_go = Button(root,text="Go",command=compare1,background=''orange'',height=4)
    button_exit = Button(root,text="Exit",command=sys.exit,background=''#fed8b1''
                         )
    button_parse = Button(root,text=''System Date'',command=parse1)
    button_parse2 = Button(root,text=''GPS Date'',command=parse2)
    button_parse3 = Button(root,text=''Latitude'',command=parse3)
    button_parse4 = Button(root,text=''Longitude'',command=parse4)
    button_parse5 = Button(root,text=''alt_m'',command=parse5)
    button_parse6 = Button(root,text=''Freq Cluster'',command=parse6)
    button_parse7 = Button(root,text=''Freq Raw'',command=parse7)
    button_parse8 = Button(root,text=''RSSi_dbm'',command=parse8)
    button_parse9 = Button(root,text=''Hit count'',command=parse9)
    button_clear = Button(root,text=''Clear'',background=''lightblue'',command=clear)
    b1 = Button(root,text="First CSV",command=button_browse_callback,background=''#fed8b1'',)
    b2 = Button(root,text="Second CSV",command=button_browse_callback2,background=''#fed8b1'')
    separator2 = Frame(root,relief=SUNKEN)
    separator3 = Frame(root,relief=SUNKEN)
    statusText2 = StringVar(root)
    message2 = Label(root,textvariable=statusText2,background=''lightgrey'')
    Console = Text(root,height=15,width=60)
    message.pack()

    separator.pack(fill=X,padx=110,pady=5)

    b1.pack(side=TOP,anchor=NW,padx=20,pady= 10)

    entry.pack(side=TOP,padx=20)

    b2.pack(side=TOP,pady= 10)

    entry2.pack(side=TOP,padx=20)

    button_go.pack(pady=6)

    b2.pack()

    statusText2.set("Extract Data from diff.csv")

    separator3.pack(fill=X,padx=90,pady=5)

    message2.pack()

    separator2.pack(fill=X,pady=5)
    Console.pack()
    variable.set("Data Type")
    button_clear.pack(pady=4,padx=5)
    button_parse.pack(pady=4,side=LEFT,padx=5)
    button_parse2.pack(pady=4,padx=5)
    button_parse3.pack(pady=4,padx=5 )
    button_parse4.pack(pady=4,padx=5 )
    button_parse5.pack(pady=4,padx=5 )
    button_parse6.pack(pady=4,padx=5 )
    button_parse7.pack(pady=4,padx=5 )
    button_parse8.pack(pady=4,padx=5)
    button_parse9.pack(pady=4,padx=5)
    button_exit.pack(side=LEFT,padx=15)
    root.maxsize(800,670);
    root.minsize(800,670);
    root.mainloop()

gui()

GUI空白图片:

解决方法

正如我在您的代码中看到的,您只将差异写入输出文件。您应该尝试在 compare1() 函数中的 for 语句之前添加这一行:

file_out.write(file1.readline())

今天的关于如何在将值附加到 Java 中的 CSV 文件时为每次迭代仅附加一行/行java往csv中追加数据的分享已经结束,谢谢您的关注,如果想了解更多关于(react-csv) 分配具有相同列名但来自不同表的 csv 标题、15、解决 14 中 csv 用 excel 打开乱码的问题 open (''zhihu.csv'',''w'',newline='''',encoding=''ut...、Apache Commons CSV 1.5,读写 CSV 文件的 Java 库、CSV 差异查找器不包括输出文件中的标题 diff.csv 输出:'diff.csv' 想要的输出:问题可能出在哪里:完整代码在这里:GUI空白图片:的相关知识,请在本站进行查询。

本文标签: