ねごとめも背景

    ねごとめも



    作成したプログラムは、こちらでも公開しています。
    よかったら覗いてみてください。_(┐「ε:)_
    → javascript,SVG で作成したプログラム置き場
    → プログラム一覧 - (2)

    java csv ファイルの読み込み, 書き出し 修正(5)

    前回作成した csv ファイルの読み込み, 書き出し[カンマ区切り,タブ区切り]修正(4) を少し修正。
    前回の csv クラスは、改行を含むセルや、セル内に区切り記号が存在する場合、
    ダブルクォーテーションで囲まれた値を配列に格納。
    今回は、シングルクォーテーションで囲まれた値も配列に格納出来るように訂正。
    ダブルクォーテーション、シングルクォーテーションで囲まれた値が混在する場合も配列に格納。

    出力した csv ファイルを、 OpenOffice に読み込ませてみると、行、列数は同じ結果。
    同じ csv ファイルを LibreOffice に読み込ませてみると、行、列数が一致しない場合があった。
    セルの終わりに、ダブルクォーテーション、シングルクォーテーションが
    連続して出現した場合に、行、列数が一致しない。
    セルの値もクォーテーション数が入力数と同じにならない。
    確認した範囲では、区切り記号の前に存在するクォーテーションが奇数の場合、セルの終了?
    偶数の場合、区切り記号は区切りとして認識されない。(?_?)

    OpenOffice では偶数の場合も区切りとして認識される結果だった。

    例えば、クォーテーションが 5 つ並んだ場合、セルに表示されるクォーテーションは 2 つ。
    この辺りの処理がまだできてない。(-_-;)

    ■ csvSample.java

    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.Date;
    public class csvSample
    {
    	public static void main(String args[])
    	{
    		try
    		{
    			//CSV csvObj=new CSV('\t');// 読み込む csv の区切り記号
    			CSV csvObj=new CSV(',');// 読み込む csv の区切り記号
    			String[][] data=csvObj.fgetcsv("template.csv","utf-8");//template.csvファイルを utf-8 で読み込み
    			csvObj.setDelimiter(',');// 出力する csv の区切り記号の設定
    			//System.out.println("rows="+data.length+"        cols="+data[0].length);
    			csvObj.write("result.csv","utf-8");//result.csv へ utf-8 で出力
    		}
    		catch(FileNotFoundException e)
    		{
    			System.out.println("FileNotFoundException error");
    		}
    		catch(IOException e)
    		{
    			System.out.println("IOException error");
    		}
    	}
    }
    

    ■ CSV.java

    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.util.ArrayList;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    class CSV
    {
    	private char delimiter;
    	CSV(char _delimiter)
    	{
    		delimiter=_delimiter;
    	}
    	
    	public void setDelimiter(char _delimiter)
    	{
    		delimiter=_delimiter;
    	}
    	
    	final void setData(String[][] data){ csv=null; csv=data; }
    	
    	final String[][] setData(String[][] data,Integer index)
    	{
    		String[][] newData=new String[data.length-1][data[0].length];
    		System.arraycopy(data,index,newData,0,data.length-1);
    		return newData;
    	}
    	
    	final String[][] join(String[][] d1,String[][] d2)
    	{
    		String[][] data=new String[d1.length+d2.length][d1[0].length];
    		System.arraycopy(d1,0,data,0,d1.length);
    		System.arraycopy(d2,0,data,d1.length,d2.length);
    		return data;
    	}
    	
    	final void write(String fileName,String encode) throws FileNotFoundException, IOException
    	{
    		try(BufferedWriter output=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName),encode)))
    		{
    			StringBuffer result=new StringBuffer();
    			for(int i=0;i<csv.length;i++)
    			{
    				for(int j=0;j<csv[i].length;j++)
    				{
    					String comma="\""+delimiter+"\"";
    					String quot=(j==0)?"\"":"";
    					if(j==(csv[i].length-1)){ comma="\"\n"; }
    					result.append(quot);
    					result.append(csv[i][j]);
    					result.append(comma);
    				}
    			}
    			output.write(result.toString().trim());
    			output.close();
    		}
    	}
    
    	private String[][] csv;
    	final String[][] fgetcsv(String fileName,String encode) throws FileNotFoundException, IOException
    	{
    		csv=null;
    		try(BufferedReader input=new BufferedReader(new InputStreamReader(new FileInputStream(fileName),encode)))
    		{
    			ArrayList<ArrayList> rows=new ArrayList<>();
    			ArrayList<String> cols=new ArrayList<>();
    			StringBuffer str=new StringBuffer();
    			int colsMax=0;
    			boolean group=false;
    			int ch;
    			char prev=delimiter;
    			char quot='"';
    			boolean space=false;
    			while((ch=input.read())!=-1)
    			{
    				char _char=(char)ch;
    				if(!group)
    				{
    					if(_char=='\r'){}
    					else if(_char=='"'||_char=='\'')
    					{
    						if(prev==delimiter)
    						{
    							group=true;
    							quot=_char;
    						}
    						str.append(_char);
    						prev=_char;
    					}
    					else if(_char==delimiter)
    					{
    						cols.add(str.toString());
    						str=new StringBuffer();
    						prev=_char;
    					}
    					else if(_char=='\n')
    					{
    						cols.add(str.toString());
    						rows.add(cols);
    						colsMax=(colsMax<cols.size())? cols.size():colsMax;
    						cols=new ArrayList<>();
    						str=new StringBuffer();
    						prev=delimiter;
    					}
    					else
    					{
    						str.append(_char);
    						prev=_char;
    					}
    				}
    				else
    				{
    					if(_char=='\r'){}
    					else if(_char==delimiter)
    					{
    						if(str.length()==1)
    						{
    							str.append(_char);
    						}
    						else if(prev==quot)
    						{
    							group=false;
    							cols.add(str.toString());
    							str=new StringBuffer();
    						}
    						else
    						{
    							str.append(_char);
    						}
    						prev=_char;
    						space=false;
    					}
    					else if(_char=='\n')
    					{
    						if(str.length()==1)
    						{
    							str.append(_char);
    							prev=_char;
    						}
    						else if(prev==quot&&!space)
    						{
    							group=false;
    							cols.add(str.toString());
    							rows.add(cols);
    							colsMax=(colsMax<cols.size())? cols.size():colsMax;
    							cols=new ArrayList<>();
    							str=new StringBuffer();
    							prev=delimiter;
    						}
    						else
    						{
    							str.append(_char);
    							prev=_char;
    						}
    					}
    					else if(_char==' ')
    					{
    
    						str.append(_char);
    						space=true;
    					}
    					else
    					{
    						str.append(_char);
    						prev=_char;
    						space=false;
    					}
    				}
    			}
    			if(cols.size()!=0||str.length()!=0)
    			{
    				cols.add(str.toString());
    				rows.add(cols);
    				colsMax=(colsMax<cols.size())? cols.size():colsMax;
    			}
    			csv=new String[rows.size()][rows.get(0).size()];
    			for(int i=0;i<csv.length;i++)
    			{
    				for(int j=0;j<csv[i].length;j++)
    				{
    					String result;
    					try{ result=(String)rows.get(i).get(j); }catch(IndexOutOfBoundsException e){ result=""; }
    					result=result.replaceAll("^[  \t\n]+|\t|[  \t\n]+$","");
    					Pattern p1=Pattern.compile("(?s)^\'.*\'$");
    					Matcher m1=p1.matcher(result);
    					Pattern p2=Pattern.compile("(?s)^\".*\"$");
    					Matcher m2=p2.matcher(result);
    					if(m1.matches()||m2.matches())
    					{
    						result=result.replaceAll("(?s)^[\'|\"]|[\'|\"]$","");
    					}
    					//System.out.println("["+result+"]");
    					csv[i][j]=result;
    				}
    			}
    			input.close();
    		}
    		return csv;
    	}
    }
    

    2013/07/18 [01:44]
    • category : java,
    • comment : 0

    java csv 列値の入れ替え(1)[ 消費税対策室 ]

    今回は2つの CSV ファイルの列値を比較して同じ値であればその行の任意の列データを流し込むテスト。
    例:
    A csv ファイルに商品 ID ( 1234 ) の行データが存在する。
    商品 ID ( 1234 ) 行の 20 列の値に 消費税込の価格のデータがある。

    A csv ファイルを編集した B csv ファイルに A ファイルと同じ商品 ID ( 1234 ) の編集済みの行データがある。
    その 10 列の値に消費税込みの価格データがある。

    消費税が上がり A csv ファイルの消費税込みの価格が変更される。
    B ファイルの消費税込み価格データ ( 10 列 ) を
    A csv ファイルの消費税込み価格データ ( 20 列 ) に書き換えるもの。
    よくわからない。('A`)

    消費税が上がった時の為に作成したテストプログラム。
    こういうの、 Libreoffice で出来たりするのかな。
    マ、マクロ??とか使って??

    この java プログラムが実際、使えるかどうかは、その日が来るまでわからない。
    *試される場合は、実行する前に CSV ファイルのバックアップを取ってください。
    *読み込める csv ファイルはカンマ区切りの csv ファイルです。
    *出力ファイルのエンコード utf-8
    *入力ファイルのエンコード utf-8 以外

    JTextField に ディレクトリのパスを入力すると、
    そのディレクトリをルートにしたファイルチューザーが表示されます。
    ”root reset” ボタンでルート初期化。
    ”古いファイルの選択” ボタンで書き換え csv ファイルの読み込み。
    ”新しいファイルの選択” ボタンで入れ換える csv ファイルの読み込み。
    JComboBox で比較する ID セルの選択、置き換え、書き換え、セルの選択。
    ”実行” ボタンで指定セルの書き換え。
    コンパイルすると警告がでます。
    ”古いファイルの選択” で選択したファイル名で出力するので、必ずバックアップをっ!
    確認ダイアログも無く、迷いなく上書きします!\(^o^)/

    ■ SetPrice.java 実行結果

    java csv 列値入れ替え

    ■ SetPrice.java

    
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.Font;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.BufferedReader;
    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.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.util.ArrayList;
    import javax.swing.Box;
    import javax.swing.BoxLayout;
    import javax.swing.DefaultComboBoxModel;
    import javax.swing.JButton;
    import javax.swing.JComboBox;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    import javax.swing.SwingUtilities;
    import javax.swing.UIManager;
    import javax.swing.filechooser.FileNameExtensionFilter;
    
    public class SetPrice extends JFrame
    {
    	private static SetPrice price;
    	private JTextField oldDir,newDir;
    	private JButton selectOLD,selectNEW;
    	private JTextArea result;
    	private CSV oldCSV,newCSV;
    	private String[][] oldData,newData;
    	private DefaultComboBoxModel oldIdComboBoxModel,newIdComboBoxModel,oldColComboBoxModel,newColComboBoxModel;
    	private JComboBox oldIdCombo,newIdCombo,oldColCombo,newColCombo;
    	private MyFileOpenListener oldFileOpenListener,newFileOpenListener;
    
    	private class CSV
    	{
    		final void setData(String[][] data){ csv=null; csv=data; }
    
    		final void write(String fileName) throws FileNotFoundException, IOException
    		{
    			try(BufferedWriter output=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName),"utf-8")))
    			{
    				StringBuffer result=new StringBuffer();
    				for(int i=0;i<csv.length;i++)
    				{
    					for(int j=0;j<csv[i].length;j++)
    					{
    						String comma="\",\"";
    						String quot=(j==0)?"\"":"";
    						if(j==(csv[i].length-1)){ comma="\"\n"; }
    						result.append(quot);
    						result.append(csv[i][j]);
    						result.append(comma);
    					}
    				}
    				output.write(result.toString().trim());
    				output.close();
    			}
    		}
    
    		private String[][] csv;
    		final String[][] fgetcsv(String fileName,String encode) throws FileNotFoundException, IOException
    		{
    			csv=null;
    			try(BufferedReader input=new BufferedReader(new InputStreamReader(new FileInputStream(fileName),encode)))
    			{
    				ArrayList<ArrayList> rows=new ArrayList<>();
    				ArrayList<String> cols=new ArrayList<>();
    				StringBuffer str=new StringBuffer();
    				int rowsIndex=0;
    				int colsIndex=0;
    				int colsMax=0;
    				boolean group=false;
    				int ch;
    				char prev=',';
    				boolean space=false;
    				while((ch=input.read())!=-1)
    				{
    					char _char=(char)ch;
    					if(!group)
    					{
    						switch(_char)
    						{
    							case '\r' : break;
    
    							case '"':
    									if(prev==',')
    									{
    										group=true;
    									}
    									str.append(_char);
    									prev=_char;
    							break;
    
    							case ',':
    									cols.add(colsIndex,str.toString());
    									colsIndex++;
    									str=new StringBuffer();
    									prev=_char;
    							break;
    
    							case '\n':
    									cols.add(colsIndex,str.toString());
    									rows.add(rowsIndex,cols);
    									rowsIndex++;
    									colsMax=(colsMax<cols.size())? cols.size():colsMax;
    									colsIndex=0;
    									cols=new ArrayList<>();
    									str=new StringBuffer();
    									//prev=_char;
    									prev=',';
    							break;
    
    							default:
    									str.append(_char);
    									prev=_char;
    							break;
    						}
    					}
    					else
    					{
    						switch(_char)
    						{
    							case '\r' : break;
    
    							case ',':
    									if(str.length()==1)
    									{
    										str.append(_char);
    									}
    									else if(prev=='"')
    									{
    										group=false;
    										cols.add(colsIndex,str.toString());
    										colsIndex++;
    										str=new StringBuffer();
    									}
    									else
    									{
    										str.append(_char);
    									}
    									prev=_char;
    									space=false;
    							break;
    
    							case '\n':
    									if(str.length()==1)
    									{
    										str.append(_char);
    										prev=_char;
    									}
    									else if(prev=='"'&&!space)
    									{
    										group=false;
    										cols.add(colsIndex,str.toString());
    										rows.add(rowsIndex,cols);
    										rowsIndex++;
    										colsMax=(colsMax<cols.size())? cols.size():colsMax;
    										colsIndex=0;
    										cols=new ArrayList<>();
    										str=new StringBuffer();
    										prev=',';
    									}
    									else
    									{
    										str.append(_char);
    										prev=_char;
    									}
    							break;
    
    							case ' ': str.append(_char); space=true; break;
    							case '\t': str.append(_char); space=true; break;
    							case ' ': str.append(_char); space=true; break;
    
    							default:
    									str.append(_char);
    									prev=_char;
    									space=false;
    							break;
    						}
    					}
    				}
    				if(colsIndex!=0||str.length()!=0)
    				{
    					cols.add(colsIndex,str.toString());
    					rows.add(rowsIndex,cols);
    					colsMax=(colsMax<cols.size())? cols.size():colsMax;
    				}
    				csv=new String[rows.size()][colsMax];
    				for(int i=0;i<csv.length;i++)
    				{
    					for(int j=0;j<csv[i].length;j++)
    					{
    						String result;
    						try{ result=(String)rows.get(i).get(j); }catch(IndexOutOfBoundsException e){ result=""; }
    						result=result.replaceAll("^[  \t]|\t|[  \t]+$","");
    						try
    						{
    							if(result.indexOf("\"")==0&&result.lastIndexOf("\"")==(result.length()-1))
    							{
    								result=result.substring(result.indexOf("\"")+1,result.lastIndexOf("\""));
    							}
    							else if(result.indexOf("\"")==0)
    							{
    								result=result.substring(result.indexOf("\"")+1,result.length());
    							}
    							else
    							{
    								result=result;
    							}
    						}catch(StringIndexOutOfBoundsException e){}
    						csv[i][j]=result;
    					}
    				}
    				input.close();
    			}
    			return csv;
    		}
    	}
    
    	private class MyFileOpenListener implements ActionListener
    	{
    		private String prevDir="";
    		private String nextDir="";
    		JFileChooser filechooser=null;
    
    		public void setDir(String dir)
    		{
    			prevDir=dir;
    			nextDir=dir;
    		}
    		@Override
    		public void actionPerformed(ActionEvent e)
    		{
    			result.setText("");
    			prevDir=("oldFile".equals(e.getActionCommand()))? oldDir.getText().trim() : newDir.getText().trim();
    			String currentDir=("".equals(nextDir)) ? prevDir : nextDir;
    			File dir = new File(currentDir);
    			//if(filechooser==null)
    			//{
    				filechooser=new JFileChooser(dir);
    				filechooser.setDialogTitle("CSVファイルの選択");
    				FileNameExtensionFilter filefilter=new FileNameExtensionFilter(".csv file","csv");
    				filechooser.setFileFilter(filefilter);
    			//}
    			int selected=filechooser.showOpenDialog(price);
    			if(selected==JFileChooser.APPROVE_OPTION)
    			{
    				File file=filechooser.getSelectedFile();
    				String fileName=file.getName();
    				if(fileName.endsWith(".csv"))
    				{
    					nextDir=String.valueOf(filechooser.getCurrentDirectory());
    					fileName=String.valueOf(filechooser.getSelectedFile());
    					switch(e.getActionCommand())
    					{
    						case "oldFile":
    								selectOLD.setText(fileName);
    								oldCSV=new CSV();
    								try
    								{
    									oldData=oldCSV.fgetcsv(fileName,"utf-8");
    								}
    								catch(Exception ex){}
    								oldIdComboBoxModel.removeAllElements();
    								oldColComboBoxModel.removeAllElements();
    								oldIdComboBoxModel.addElement("列番");
    								oldColComboBoxModel.addElement("列番");
    								for(int i=0;i<oldData[0].length;i++)
    								{
    									oldIdComboBoxModel.addElement(String.valueOf(i+1));
    									oldColComboBoxModel.addElement(String.valueOf(i+1));
    								}
    						break;
    
    						case "newFile":
    								selectNEW.setText(fileName);
    								newCSV=new CSV();
    								try
    								{
    									newData=newCSV.fgetcsv(fileName,"JISAutoDetect");
    								}
    								catch(Exception ex){}
    								newIdComboBoxModel.removeAllElements();
    								newColComboBoxModel.removeAllElements();
    								newIdComboBoxModel.addElement("列番");
    								newColComboBoxModel.addElement("列番");
    								for(int i=0;i<newData[0].length;i++)
    								{
    									newIdComboBoxModel.addElement(String.valueOf(i+1));
    									newColComboBoxModel.addElement(String.valueOf(i+1));
    								}
    						break;
    					}
    				}
    				else
    				{
    					alert("CSVファイルを選択してください。");
    					switch(e.getActionCommand())
    					{
    						case "oldFile": selectOLD.setText("古いファイルの選択"); break;
    						case "newFile": selectNEW.setText("新しいファイルの選択"); break;
    					}
    				}
    			}
    		}
    	}
    	private void alert(String str)
    	{
    		JLabel label=new JLabel(str);
    		label.setFont(new Font("メイリオ",Font.PLAIN,12));
    		label.setHorizontalAlignment(JLabel.CENTER);
    		JOptionPane.showMessageDialog(this,label);
    	}
    	SetPrice()
    	{
    		super("csv 列値変更");
    		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    		try
    		{
    			UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
    			SwingUtilities.updateComponentTreeUI(this);
    		}
    		catch(Exception ex)
    		{
    			System.out.println("Error");
    		}
    		setLayout(new BorderLayout());
    		JPanel main=new JPanel();
    		main.setLayout(new BoxLayout(main,BoxLayout.PAGE_AXIS));
    
    		JPanel line_00=new JPanel();//label
    		line_00.setLayout(new FlowLayout(FlowLayout.LEFT));
    		JLabel label=new JLabel("【 値変更 】");
    
    		Font font01=new Font("メイリオ",Font.BOLD,20);
    		Font font02=new Font("メイリオ",Font.BOLD,12);
    		line_00.add(label);
    		label.setFont(font01);
    		main.add(line_00);
    
    		JPanel line_01=new JPanel();//label
    		line_01.setLayout(new FlowLayout(FlowLayout.LEFT));
    		label=new JLabel("■ 古 CSV ファイル  root:");
    		label.setFont(font02);
    		line_01.add(label);
    		oldDir=new JTextField(54);
    		line_01.add(oldDir);
    		main.add(line_01);
    
    		JPanel line_02=new JPanel();//button
    		line_02.setLayout(new FlowLayout(FlowLayout.LEFT));
    		selectOLD=new JButton("古いファイルの選択");
    		selectOLD.setFont(font02);
    		selectOLD.setPreferredSize(new Dimension(680,28));
    		selectOLD.setActionCommand("oldFile");
    		oldFileOpenListener=new MyFileOpenListener();
    		selectOLD.addActionListener(oldFileOpenListener);
    		line_02.add(selectOLD);
    		main.add(line_02);
    
    		JPanel line_03=new JPanel();//label
    		line_03.setLayout(new FlowLayout(FlowLayout.LEFT));
    		label=new JLabel("■ 新 CSV ファイル  root:");
    		label.setFont(font02);
    		line_03.add(label);
    		newDir=new JTextField(54);
    		line_03.add(newDir);
    		main.add(line_03);
    
    		JPanel line_04=new JPanel();//button
    		line_04.setLayout(new FlowLayout(FlowLayout.LEFT));
    		selectNEW=new JButton("新しいファイルの選択");
    		selectNEW.setFont(font02);
    		selectNEW.setPreferredSize(new Dimension(680,28));
    		selectNEW.setActionCommand("newFile");
    		newFileOpenListener=new MyFileOpenListener();
    		selectNEW.addActionListener(newFileOpenListener);
    		line_04.add(selectNEW);
    		main.add(line_04);
    
    
    		JPanel line_05=new JPanel();//label combobox combobox label combobox combobox label
    		label =new JLabel("古列:");
    		line_05.add(label);
    		String[] oldComboData={"列番"};
    		oldIdComboBoxModel=new DefaultComboBoxModel(oldComboData);
    		oldIdCombo=new JComboBox(oldIdComboBoxModel);
    		oldIdCombo.setPreferredSize(new Dimension(50,28));
    		line_05.add(oldIdCombo);
    		label=new JLabel("と 新列:");
    		line_05.add(label);
    
    
    		String[] newComboData={"列番"};
    		newIdComboBoxModel=new DefaultComboBoxModel(newComboData);
    		newIdCombo=new JComboBox(newIdComboBoxModel);
    		newIdCombo.setPreferredSize(new Dimension(50,28));
    		line_05.add(newIdCombo);
    		label=new JLabel("を比較して同じ場合、");
    		line_05.add(label);
    
    		//line_05.add(Box.createRigidArea(new Dimension(50,5)));
    
    		label =new JLabel("古列:");
    		line_05.add(label);
    		String[] oldColComboData={"列番"};
    		oldColComboBoxModel=new DefaultComboBoxModel(oldColComboData);
    		oldColCombo=new JComboBox(oldColComboBoxModel);
    		oldColCombo.setPreferredSize(new Dimension(50,28));
    		line_05.add(oldColCombo);
    		label=new JLabel("と 新列:");
    		line_05.add(label);
    
    
    		String[] newColComboData={"列番"};
    		newColComboBoxModel=new DefaultComboBoxModel(newColComboData);
    		newColCombo=new JComboBox(newColComboBoxModel);
    		newColCombo.setPreferredSize(new Dimension(50,28));
    		line_05.add(newColCombo);
    		label=new JLabel("の値を入れ替える");
    		line_05.add(label);
    
    
    
    		main.add(line_05);
    
    		JPanel line_06=new JPanel();//button
    		line_06.setLayout(new FlowLayout(FlowLayout.RIGHT));
    		JButton reset=new JButton("root reset");
    		reset.setFont(font02);
    		reset.setPreferredSize(new Dimension(150,28));
    		reset.addActionListener(new ActionListener()
    		{
    			@Override
    			public void actionPerformed(ActionEvent e)
    			{
    				oldFileOpenListener.setDir(oldDir.getText().trim());
    				newFileOpenListener.setDir(newDir.getText().trim());
    			}
    		});
    		line_06.add(reset);
    		JButton run=new JButton("実行");
    		run.setFont(font02);
    		run.setPreferredSize(new Dimension(120,28));
    		run.addActionListener(new ActionListener()
    		{
    			@Override
    			public void actionPerformed(ActionEvent e)
    			{
    				price.pack();
    				if(!"古いファイルの選択".equals(selectOLD.getText())&&!"新しいファイルの選択".equals(selectNEW.getText()))
    				{
    					try
    					{
    						StringBuffer str=new StringBuffer();
    						int oldIdNum=oldIdCombo.getSelectedIndex()-1;
    						int newIdNum=newIdCombo.getSelectedIndex()-1;
    						int oldColNum=oldColCombo.getSelectedIndex()-1;
    						int newColNum=newColCombo.getSelectedIndex()-1;
    						if(oldIdNum>-1&&newIdNum>-1&&oldColNum>-1&&newColNum>-1)
    						{
    							for(int i=0;i<newData.length;i++)
    							{
    								String newId=newData[i][newIdNum].trim();
    								for(int j=0;j<oldData.length;j++)
    								{
    									String oldId=oldData[j][oldIdNum].trim();
    									if(newId.equals(oldId))
    									{
    										if(!oldData[j][oldColNum].trim().equals(newData[i][newColNum].trim()))
    										{
    											oldData[j][oldColNum]=newData[i][newColNum].trim();
    											str.append(oldId+"\n");
    										}
    									}
    								}
    							}
    							oldCSV.setData(oldData);
    							oldCSV.write(selectOLD.getText());
    							str.append("値を変更しました。");
    							result.setText(str.toString());
    							//alert("値を変更しました。");
    						}
    						else
    						{
    							alert("列を選択してください。");
    						}
    					}
    					catch(Exception ex){}
    				}
    				else
    				{
    					alert("csv ファイルを選択してください。");
    				}
    			}
    		});
    		line_06.add(run);
    		main.add(line_06);
    
    		result=new JTextArea(12,50);
    		result.setFont(new Font("メイリオ",Font.PLAIN,14));
    		JScrollPane scroll=new JScrollPane(result);
    		main.add(scroll);
    
    		add("North",main);
    		int wid=(int)d.getWidth();
    		int hei=(int)d.getHeight();
    		setBounds((wid-700)/2,(hei-500)/2,700,500);
    		setVisible(true);
    		setDefaultCloseOperation(EXIT_ON_CLOSE);
    	}
    
    	public static void main(String[] args)
    	{
    		price=new SetPrice();
    		price.pack();
    	}
    }
    

    2013/06/28 [00:40]
    • category : java,
    • comment : 0

    カウンター

    プロフィール

    negotoy

    Author:negotoy
    好きな選手権 :chara選手権
    好きなコーナー :リスナーが凸して
    椎名林檎の丸の内を歌うコーナー

    PC ゲーム歴 :
    モバゲーのタイピングゲームで
    タイピングの練習(サービス終了)
    ニックネーム : クッキー
    以降ゲーム歴なし

    [ YouTube ]

    chara : あいのうた
    椎名林檎 : ありあまる富
    かせきさいだぁ : じゃっ 夏なんで
    阿部真央 : 貴方の恋人になりたいのです

    最新記事

    カテゴリ

    カレンダー

    07 | 2018/08 | 09
    - - - 1 2 3 4
    5 6 7 8 9 10 11
    12 13 14 15 16 17 18
    19 20 21 22 23 24 25
    26 27 28 29 30 31 -


    PAGE TOP
    広告: