将csv转换为xls时宏出现java问题
我的项目遇到了问题。有一个包含宏的xls文件用于创建图表,该xls文件的单元格类型为“text”。我必须用宏复制该文件的多个副本,然后从名为“result”的文件夹中获取csv文件,并将值逐个放入这些重复的xls文件中,通过宏,我必须创建与这些值对应的图表。我知道如何从csv中获取值并将其放入一个xls文件。我还知道可以创建图表的宏代码
但问题是,当我将值发送到重复文件时,它不会显示宏。我使用的代码如下所示
有人可以修改我的代码,将csv文件的值转换为可以显示宏的重复xls文件吗。请帮帮我
提前
包com。惠普。io
导入java。木卫一。缓冲输入流; 导入java。木卫一。缓冲输出流; 导入java。木卫一。缓冲读取器; 导入java。木卫一。文件 导入java。木卫一。文件输入流; 导入java。木卫一。文件输出流; 导入java。木卫一。文件名过滤器; 导入java。木卫一。IOException; 导入java。木卫一。输入流阅读器; 导入java。util。ArrayList; 导入组织。阿帕奇。波伊。hssf。用户模型。HSSFCell; 导入组织。阿帕奇。波伊。hssf。用户模型。HSSFRow; 导入组织。阿帕奇。波伊。hssf。用户模型。HSSFSheet; 导入组织。阿帕奇。波伊。hssf。用户模型。HSSF工作手册
公共类CSVtoXLS{
// FileOutputStream fileOut=null;
//FileInputStream fis=null;
公共静态void main(字符串[]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;
}
}
# 1 楼答案
每次您似乎都在创建一个新的空excel文件
假设我正确理解了你的问题,你会想要打开一个现有的excel文件,其中已经定义了宏。然后将CSV中的数据写入该文件,最后保存。然后,您将拥有一个包含宏和数据的excel文件