Java 将csv转换为xls时宏出现问题

Java 将csv转换为xls时宏出现问题,java,excel-2003,apache-poi,Java,Excel 2003,Apache Poi,我的项目遇到问题。有一个xls文件带有宏,用于创建图表,该xls文件的单元格类型为“文本”。我必须使用宏制作该文件的多个副本,然后从名为“result”的文件夹中获取csv文件,并将值逐个地输入到这些重复的xls文件中宏我必须创建与这些值对应的图表。我知道如何从csv获取值并将其放入一个xls文件。我还知道可以创建图表的宏代码 但问题是,当我将值发送到重复文件时,它不会显示宏 任何人都可以修改我的代码,将csv文件的值转换为可以显示宏的重复xls文件。请帮助我 提前 包com.hp.io 导入j

我的项目遇到问题。有一个xls文件带有宏,用于创建图表,该xls文件的单元格类型为“文本”。我必须使用宏制作该文件的多个副本,然后从名为“result”的文件夹中获取csv文件,并将值逐个地输入到这些重复的xls文件中宏我必须创建与这些值对应的图表。我知道如何从csv获取值并将其放入一个xls文件。我还知道可以创建图表的宏代码

但问题是,当我将值发送到重复文件时,它不会显示宏

任何人都可以修改我的代码,将csv文件的值转换为可以显示宏的重复xls文件。请帮助我

提前

包com.hp.io

导入java.io.BufferedInputStream; 导入java.io.BufferedOutputStream; 导入java.io.BufferedReader; 导入java.io.File; 导入java.io.FileInputStream; 导入java.io.FileOutputStream; 导入java.io.FilenameFilter; 导入java.io.IOException; 导入java.io.InputStreamReader; 导入java.util.ArrayList; 导入org.apache.poi.hssf.usermodel.HSSFCell; 导入org.apache.poi.hssf.usermodel.HSSFRow; 导入org.apache.poi.hssf.usermodel.HSSFSheet; 导入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;

        }

}

每次您似乎都在创建一个新的空excel文件


假设我正确理解了你的问题,你会想打开一个已有的excel文件,其中包含已定义的宏。然后将CSV中的数据写入该文件,最后保存。然后,你将拥有一个包含宏和数据的excel文件。

是。你的假设完全相同。如果结果中有两个CSV文件,唯一要做的事情是der,它从现有的xls文件复制了带有宏的2 xls文件,并将那些2 csv的值复制到带有宏的2 xls文件。你能帮我吗?提前谢谢……小心……我恐怕不知道你在问什么,对不起……我建议你编辑这个问题,以便更清楚出了什么问题,哪里出了问题