Проблема с макросом при преобразовании CSV в XLS - PullRequest
0 голосов
/ 14 июня 2011

У меня проблема с моим проектом. Есть один файл xls с макросом, который создает диаграмму, и типом ячейки этого файла xls является 'text'. Мне нужно сделать несколько дубликатов этого файла с макросома затем из папки с именем «result» мне нужно извлечь файлы CSV и поместить значения в эти дубликаты файлов XLS по одному, и с помощью макроса я должен создать диаграммы, соответствующие этим значениям. Я знаю, как получить значения из CSV ипоместите его в один файл xls. Я также знаю коды макроса, который может создать диаграмму.

Но проблема в том, что когда я отправляю значения в дубликаты файлов, макрос не отображается.Я использую код, показанный ниже.

Кто-нибудь может изменить мой код, чтобы получить значения csv-файлов для тех дубликатов xls-файлов, которые могут отображать макрос. ПОЖАЛУЙСТА, ПОМОГИТЕ МНЕ.

THNX заранее......

пакет com.hp.io;

import java.io.BufferedInputStream;import java.io.BufferedOutputStream;импорт java.io.BufferedReader;импорт java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FilenameFilter;импорт 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;

открытый статический void main (аргументы String []) выдает исключение 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;

        }

}

1 Ответ

0 голосов
/ 15 июня 2011

Кажется, вы каждый раз создаете новый пустой файл Excel

Если я правильно понял ваш вопрос, вы захотите открыть существующий файл Excel с уже определенным макросом.Затем запишите свои данные из CSV в этот файл и, наконец, сохраните их.После этого у вас будет файл Excel с макросом и данными.

...