2011-06-14 36 views
0

我讓我的project.There的一個問題是與創建一個圖表和XLS文件的細胞類型的宏一個xls文件是「text'.I必須做出多個複製該文件的副本與宏,然後從一個名爲「結果」我要取的CSV文件,並通過一個和通過宏觀我要創建圖表corrosponding那些values.I把值那些重複的XLS文件一個文件夾知道如何從csv獲取值並將其放到一個xls文件中。我也知道可以創建圖表的宏的代碼。問題與宏時,將CSV爲XLS

但問題是,當我發送值的重複文件不顯示macro.I正在使用的代碼如下所示。

任何人都可以修改我的代碼來獲得CSV文件中的值可以顯示在macro.PLEASE HELP ME那些重複的XLS文件。

預先日Thnx ......

包com.hp.io;

進口java.io.BufferedInputStream中; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook;

公共類CSVtoXLS {

// FileOutputStream fileOut=null; 
//FileInputStream fis=null; 

公共靜態無效的主要(字串[] args)拋出IOException異常{

String thisline; 
ArrayList<String> al = null; 
ArrayList<ArrayList<String>> arlist = new ArrayList<ArrayList<String>>(); 

String libRoot=new File(".").getAbsolutePath();  
libRoot=libRoot.replaceAll("\\\\", "/"); 
File f=new File(libRoot+"/result"); 
FilenameFilter filter = new FilenameFilter() 
{ 
    @Override public boolean accept(File dir, String name) 
    { 
     return name.endsWith(".csv"); 
    } 
}; 



File file[]=f.listFiles(filter); 


for(int r=0;r<file.length;r++){ 

    String r1=libRoot+"/result/output"+r+".xls"; 
    arlist.clear(); 
    File currentFile=file[r]; 

    FileInputStream fis = new FileInputStream(currentFile); 
    //DataInputStream myInput = new DataInputStream(fis); 

    BufferedReader br = new BufferedReader(new InputStreamReader(fis)); 
    while ((thisline = br.readLine()) != null) { 
     al = new ArrayList<String>(); 
     String strar[] = thisline.split(","); 

     for (int j = 0; j < strar.length; j++) { 


      al.add(strar[j]); 
     } 

     arlist.add(al); 
     //i++; 

    } 

    fis.close(); 


     HSSFWorkbook hwb = new HSSFWorkbook(); 
     HSSFSheet sheet = hwb.createSheet("new sheet"); 

     for (int k = 0; k < arlist.size(); k++) { 
      ArrayList<String> ardata = (ArrayList<String>) arlist.get(k); 
      HSSFRow row = sheet.createRow((short) k); 

      for (int p = 0; p < ardata.size(); p++) { 
       //System.out.print(ardata.get(p)); 
       HSSFCell cell = row.createCell((short) p); 
       cell.setCellValue(ardata.get(p).toString()); 
      } 
     } 

     //if(currentFile == file[0]){ 

     FileOutputStream fileOut = new FileOutputStream(r1); 

     hwb.write(fileOut); 




     //hwb.write(fileOut); 

     //} 
     //hwb.write(fileOut); 
     fileOut.flush(); 
     fileOut.close(); 


     br.close(); 
     System.out.println("conversion is done"); 

     //hwb=null; 
     } 
     //else if (currentFile == file[1]) { 
      //fileOut = new FileOutputStream(libRoot+"/result/output.xls"); 
      //hwb.write(fileOut); 
      //fileOut.flush(); 
      //fileOut.close(); 
      //hwb=null; 

     } 

}

回答

0

你似乎是創建一個新的,空的excel每次

假設我正確理解你的問題的文件,你要運現有的Excel文件中已經定義了您的宏。然後將您的數據從CSV文件寫入該文件,最後保存。然後,您將擁有一個包含宏和數據的Excel文件。

+0

是的。你認爲什麼是完全相同的。唯一如果我在結果文件夾中有2個csv文件,它從現有的xls文件複製2個帶有宏的xls文件,並將那些2個csv的值複製到2個xls文件與宏觀。 你能幫我嗎?在此先感謝....保重... – Basudev 2011-06-16 05:14:36

+0

恐怕我不知道你在問什麼,對不起....我建議你編輯問題,使其更清楚哪裏出錯和哪裏 – Gagravarr 2011-06-16 08:58:44