Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过读取excel工作表生成文件_Java_Excel_File - Fatal编程技术网

Java 通过读取excel工作表生成文件

Java 通过读取excel工作表生成文件,java,excel,file,Java,Excel,File,有一个excel文件,其中一列中有许多文件名。我需要编写一个java代码,读取这些文件名并在目的地生成相同的文件名。有人能帮我吗?import java.io.file; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.

有一个excel文件,其中一列中有许多文件名。我需要编写一个java代码,读取这些文件名并在目的地生成相同的文件名。有人能帮我吗?

import java.io.file;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;

import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Test {

    public static void main(String[] args) throws IOException {

        try {

            FileInputStream file = new FileInputStream(new File("C:\\test.xls"));

            HSSFWorkbook workbook = new HSSFWorkbook(file);
            HSSFSheet sheet = workbook.getSheetAt(0);
          //Iterate through each rows from first sheet
            Iterator<Row> rowIterator = sheet.iterator();
            while(rowIterator.hasNext()) {
                Row row = rowIterator.next();

                //For each row, iterate through each columns
                Iterator<Cell> cellIterator = row.cellIterator();
                while(cellIterator.hasNext()) {

                    Cell cell = cellIterator.next();
                    System.out.print(cell.getStringCellValue() + "\t\t");
                    FileOutputStream outFile =new FileOutputStream(new File("C:\\"+cell.getStringCellValue()));
                    workbook.write(outFile);
                }
                System.out.println("");
            }
            file.close();

          /*  FileOutputStream outFile =new FileOutputStream(new File("C:\\update.xls"));
            workbook.write(outFile);*/
            //outFile.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
导入java.io.FileInputStream; 导入java.io.FileNotFoundException; 导入java.io.FileOutputStream; 导入java.io.IOException; 导入java.util.Iterator; 导入org.apache.poi.hssf.usermodel.HSSFSheet; 导入org.apache.poi.hssf.usermodel.HSSFWorkbook; 导入org.apache.poi.ss.usermodel.Cell; 导入org.apache.poi.ss.usermodel.Row; 导入org.apache.poi.ss.usermodel.Sheet; 导入org.apache.poi.ss.usermodel.工作簿; 导入org.apache.poi.xssf.usermodel.xssfheet; 导入org.apache.poi.xssf.usermodel.xssf工作簿; 公开课考试{ 公共静态void main(字符串[]args)引发IOException{ 试一试{ FileInputStream文件=新的FileInputStream(新文件(“C:\\test.xls”); HSSF工作簿=新的HSSF工作簿(文件); HSSFSheet sheet=工作簿。getSheetAt(0); //从第一张图纸开始遍历每行 迭代器rowIterator=sheet.Iterator(); while(roweiterator.hasNext()){ 行=行迭代器。下一步(); //对于每一行,遍历每一列 迭代器cellIterator=row.cellIterator(); while(cellIterator.hasNext()){ Cell=cellIterator.next(); System.out.print(cell.getStringCellValue()+“\t\t”); FileOutputStream outFile=新的FileOutputStream(新文件(“C:\\”+cell.getStringCellValue()); 工作簿。写入(输出文件); } System.out.println(“”); } file.close(); /*FileOutputStream outFile=新的FileOutputStream(新文件(“C:\\update.xls”)); 工作簿。写入(输出文件)*/ //outFile.close(); }catch(filenotfounde异常){ e、 printStackTrace(); }捕获(IOE异常){ e、 printStackTrace(); } } }
有一些库可用于读取excel文件。在我的例子中,我选择了可以免费下载然后添加到项目中的。添加后,请创建文档:

HSSFWorkbook workbook = new HSSFWorkbook( new FileInputStream("filename.xls") );
或者,如果是2007年或更高版本的excel文档:

XSSFWorkbook workbook = new XSSFWorkbook( new FileInputStream("filename.xlsx") );
现在,您可以遍历每一行并读取第一列:

for( Row row : workbook.getSheetAt(0) ) // Go through each row in sheet 0
    System.out.println( row.getCell(0).getStringCellValue() );
公开课考试{

public static void main(String[] args) throws IOException {

    try {

        FileInputStream file = new FileInputStream(new File("D:\\sampleFileNames.xls"));

        HSSFWorkbook workbook = new HSSFWorkbook(file);
        FileOutputStream outFile= null;
        HSSFSheet sheet = workbook.getSheetAt(0);
      //Iterate through each rows from first sheet
        Iterator<Row> rowIterator = sheet.iterator();
        while(rowIterator.hasNext()) {
            Row row = rowIterator.next();
            //For each row, iterate through each columns
            Iterator<Cell> cellIterator = row.cellIterator();
                    Cell cell = cellIterator.next();
                    File file1 = new File("D:\\Ganesh\\"+cell.getStringCellValue().toString());
                    if(!file1.createNewFile()) {
                        System.out.println("File already exists");


              /*  Cell cell = cellIterator.next();
                System.out.print(cell.getStringCellValue() + "\t\t");
                outFile =new FileOutputStream(new File("D:\\Ganesh\\"+cell.getStringCellValue().toString()));
                //workbook.write(outFile);
            System.out.println("");
        }
        file.close();
        outFile.close();
      /*  FileOutputStream outFile =new FileOutputStream(new File("C:\\update.xls"));
        workbook.write(outFile);*/
        //outFile.close();


}
        }
        }catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
publicstaticvoidmain(字符串[]args)引发IOException{
试一试{
FileInputStream文件=新的FileInputStream(新文件(“D:\\sampleFileNames.xls”);
HSSF工作簿=新的HSSF工作簿(文件);
FileOutputStream输出文件=null;
HSSFSheet sheet=工作簿。getSheetAt(0);
//从第一张图纸开始遍历每行
迭代器rowIterator=sheet.Iterator();
while(roweiterator.hasNext()){
行=行迭代器。下一步();
//对于每一行,遍历每一列
迭代器cellIterator=row.cellIterator();
Cell=cellIterator.next();
File file1=新文件(“D:\\Ganesh\\”+cell.getStringCellValue().toString());
如果(!file1.createNewFile()){
System.out.println(“文件已存在”);
/*Cell=cellIterator.next();
System.out.print(cell.getStringCellValue()+“\t\t”);
outFile=newfileoutputstream(新文件(“D:\\Ganesh\\”+cell.getStringCellValue().toString());
//工作簿。写入(输出文件);
System.out.println(“”);
}
file.close();
outFile.close();
/*FileOutputStream outFile=新的FileOutputStream(新文件(“C:\\update.xls”));
工作簿。写入(输出文件)*/
//outFile.close();
}
}
}catch(filenotfounde异常){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
}
}

嘿,这真的很有帮助。非常感谢……:)谢谢你的宝贵意见。我将利用它:)