Comment écrire des données dans plusieurs cellules dans Excel en utilisant java?


J'ai écrit un code pour écrire des données dans un Excel sheet.In je dois écrire les données dans plusieurs cellules.Mais il montre quelques erreurs.Pour une cellule, il est capable de modifier le données.J'ai gardé pour la boucle pour changer les données dans plusieurs cellules.Pour cela, il montre l'Erreur. Quelqu'un peut-il me dire que là où je me suis trompé.

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import java.lang.String;

import javax.swing.JOptionPane;

import jxl.Cell;

import org.apache.poi.hssf.util.CellReference;
import org.apache.poi.ss.formula.functions.Column;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFComment;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;


public class Sele1
{

    public static void main(String[] args)
    {
        // TODO Auto-generated method stub
        String FileName = "C:\\Users\\u304081\\Desktop\\Java\\new.xlsx";

        try 
        {
            FileInputStream fileInputStream3 = new FileInputStream(FileName);
            File outputsheetfile1 = new File(FileName);
            if(outputsheetfile1.exists()) 
            {
                System.out.println("File existed");
                try
                {
                    XSSFWorkbook ObjWorkBook = new XSSFWorkbook(fileInputStream3);
                    XSSFSheet DriverTableSheet = ObjWorkBook.getSheetAt(0);
                    for(int i=1;i<3;i++)
                    {
                    XSSFRow row1 = DriverTableSheet.getRow(i);
                    XSSFCell Cell1 = row1.getCell(0);

                    System.out.println("Cell1"+ Cell1);
                    //System.out.println("Cell2"+ Cell2);
                     String str = "Abc";
                     Cell1.setCellValue(str);

                     FileOutputStream out1 = new FileOutputStream (FileName,false);
                     ObjWorkBook.write(out1);
                     fileInputStream3.close();
                    }

                } 
            catch (IOException e) 
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        }
    }

Erreur que je reçois est:

ObjWorkBook.write(out1);

`"poi-bin-3.9-20121203\poi-3.9\poi-ooxml-3.9-20121203.jar has no source attachment"`
Author: Amith, 2013-10-29

3 answers

        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet("Course Pack Resolution Details");
        outputFileName = outPut.getAbsolutePath(); 
        int rownum = 0;`enter code here`
        for (int i = 0; i < dataList.size(); i++) {
            Object[] objArr = dataList.get(i);
            HSSFRow row = sheet.createRow(rownum++);

            int cellnum = 0;
            for (Object obj : objArr) {
                Cell cell = row.createCell(cellnum++);
                sheet.autoSizeColumn((short) cellnum);
                if (obj instanceof Date) {
                    cell.setCellValue((Date) obj);
                } else if (obj instanceof Boolean) {
                    cell.setCellValue((Boolean) obj);
                } else if (obj instanceof String) {
                    cell.setCellValue((String) obj);
                } else if (obj instanceof Double) {
                    cell.setCellValue((Double) obj);
                }
            }
        }
        if (outPut.exists()) {
            outPut.delete();
        }
        FileOutputStream out =
                new FileOutputStream(outPut);
        workbook.write(out);

DataList est ArrayList de Array Object, vous pouvez donc entrer autant de données que vous le souhaitez.

Exemple de DataList:

dataList.add(new Object[]{"Sr No.", "Cols1", "cols2", "cols3"......."colsn"});

Données respectives que vous pouvez insérer dans la liste. cet exemple est pour .format xls si vous voulez .xlsx puis utilisez xssfworkbook.

Peut vous aider.

 1
Author: Saraf Sissddharth, 2013-10-29 10:53:36

L'erreur que vous avez mentionnée:

ObjWorkBook.write(out1); Here it is showing Error as "poi-bin-3.9-20121203\poi-3.9\poi-ooxml-3.9-20121203.jar has no source attachment"

Ne semble pas être de toute façon lié au problème que vous avez mentionné à propos de l'écriture de données dans plusieurs cellules dans Excel.

Vous pouvez regarder ceci:

Comment puis-je lier la source à un paquet jar dans eclipse?

 0
Author: user1933888, 2017-05-23 12:07:28

=======l'écriture des données dans le fichier excel dans le cadre de jeu===============

HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("Sample sheet");

Map<String, Object[]> data = new HashMap<String, Object[]>();
data.put("1", new Object[] {"empNo.", "name", "salary"});
data.put("2", new Object[] {1, "John", 1500000d});
data.put("3", new Object[] {2, "Sam", 800000d});
data.put("4", new Object[] {3, "Dean", 700000d});

Set<String> keyset = data.keySet();
int rownum = 0;
for (String key : keyset) {
    Row row = sheet.createRow(rownum++);
    Object [] objArr = data.get(key);
    int cellnum = 0;
    for (Object obj : objArr) {
        Cell cell = row.createCell(cellnum++);
        if(obj instanceof Integer) 
            cell.setCellValue((Integer)obj);
        else if(obj instanceof String)
            cell.setCellValue((String)obj);
        else if(obj instanceof Double)
            cell.setCellValue((Double)obj);
    }
}

try {
    //new excel file created by fileoutput stream object 
    FileOutputStream out = 
            new FileOutputStream(new File("/home/jagasan/workspace-playexcelApp/public/ExcelFile3.xlsx"));
    workbook.write(out);
    out.close();
    System.out.println("Excel written successfully..");

} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}
return ok("file reading is completed");

=======lire les données d'Excel et les stocker dans la base de données dans playframework=======

public class Application extends Controller {

    /*
     * public Result index() { return
     * ok(index.render("Your new application is ready.")); }
     */
    public Result readExcel() throws FileNotFoundException {
        try{
           InputStream ExcelFileToRead = new FileInputStream("/home/jagasan/workspace-play/excelApp/public/ExcelFile3.xlsx");

            HSSFWorkbook wb = new HSSFWorkbook(ExcelFileToRead); 
            HSSFSheet sheet=wb.getSheetAt(0);
            HSSFRow row;
            HSSFCell cell;        
            Iterator rows = sheet.rowIterator();
            boolean flag=false;
            while (rows.hasNext())
            {
                row=(HSSFRow) rows.next();
                if(flag==false)
                {
                    flag=true;
                    continue;
                }
                Iterator cells = row.cellIterator();
                ExcelFile excelfile=new ExcelFile();
                int i=0;
                while (cells.hasNext())
                {
                    cell=(HSSFCell) cells.next();
                    if(i==0)
                        excelfile.setEmpNo((int)cell.getNumericCellValue());
                    if(i==1)
                        excelfile.setName(cell.getStringCellValue());
                    if(i==2)
                        excelfile.setSalary(cell.getNumericCellValue());
                   i++;

                }
                excelfile.save();

            }
        }
        catch(Exception e)
        {
            e.printStackTrace();
            System.out.println("error");
        }
        return ok("successful");
    }

======dans la construction.sbt=======

Utiliser le fichier jar de dépendance signifie apache API

libraryDependencies ++= Seq(
  javaJdbc,
  cache,
  javaWs,
  "org.apache.poi" % "poi" % "3.8", "org.apache.poi" % "poi-ooxml" % "3.9"
)
 0
Author: user5830061, 2016-01-23 12:36:03