এক্সেল ফাইলটি কীভাবে পড়তে এবং লিখতে হয়


172

আমি 3 টি কলাম এবং এন সারি দিয়ে জাভা থেকে একটি এক্সেল ফাইলটি পড়তে এবং লিখতে চাই, প্রতিটি ঘরে একটি স্ট্রিং মুদ্রণ করি। কেউ কি এর জন্য আমাকে সাধারণ কোড স্নিপেট দিতে পারেন? আমার কি কোনও বাহ্যিক lib ব্যবহার করা দরকার বা জাভা এর জন্য অন্তর্নির্মিত সমর্থন রাখে?

আমি নিম্নলিখিতটি করতে চাই:

for(i=0; i <rows; i++)
     //read [i,col1] ,[i,col2], [i,col3]

for(i=0; i<rows; i++)
    //write [i,col1], [i,col2], [i,col3]

সঙ্গে জাভা জন্য GemBox.Spreadsheet এই সহজ, আপনি শুধু বারবার সারি একটি পত্রকে মাধ্যমে এবং একটি সারি এবং কলে বরাদ্দ কোষ মাধ্যমে ExcelCell.getValue()প্রতিটি। উদাহরণস্বরূপ, এই পড়ার উদাহরণটি দেখুন, এছাড়াও লেখার জন্য আপনি এই উদাহরণটি পরীক্ষা করতে পারেন ।
বেলপ্যাট্রিকিয়া

উত্তর:


144

অ্যাপাচি পিওআই এইচএসএসএফ চেষ্টা করুন । এক্সেল ফাইলটি কীভাবে পড়তে হয় তার একটি উদাহরণ এখানে:

try {
    POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(file));
    HSSFWorkbook wb = new HSSFWorkbook(fs);
    HSSFSheet sheet = wb.getSheetAt(0);
    HSSFRow row;
    HSSFCell cell;

    int rows; // No of rows
    rows = sheet.getPhysicalNumberOfRows();

    int cols = 0; // No of columns
    int tmp = 0;

    // This trick ensures that we get the data properly even if it doesn't start from first few rows
    for(int i = 0; i < 10 || i < rows; i++) {
        row = sheet.getRow(i);
        if(row != null) {
            tmp = sheet.getRow(i).getPhysicalNumberOfCells();
            if(tmp > cols) cols = tmp;
        }
    }

    for(int r = 0; r < rows; r++) {
        row = sheet.getRow(r);
        if(row != null) {
            for(int c = 0; c < cols; c++) {
                cell = row.getCell((short)c);
                if(cell != null) {
                    // Your code here
                }
            }
        }
    }
} catch(Exception ioe) {
    ioe.printStackTrace();
}

ডকুমেন্টেশন পৃষ্ঠায় আপনার কাছে এক্সেল ফাইলগুলিতে কীভাবে লিখবেন তার উদাহরণ রয়েছে।


15
row.getCell ((সংক্ষিপ্ত) গ); অবহেলিত হয় আমি মনে করি পরিবর্তে আমার int ব্যবহার করতে হবে।
ডেভিডভিডিডি

4
প্রকৃতপক্ষে, কেবল (সংক্ষিপ্ত) কাস্টটি poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/…
নিকোলালিয়াস

1
এই কোড ব্যবহার করতে আমার প্রচেষ্টা, আমি দেখা গেছে যে HSSFSheetএর getPhysicalNumberOfRows()পদ্ধতি খালি নয় এমন সারির সংখ্যা আসতে করলো (এটা যে কি "প্রকৃত" বোঝানো আমাকে সুস্পষ্ট ছিল না)। সুতরাং, যদি আপনার এক্সেল ফাইলে প্রচুর খালি সারি থাকে (যেমন বিন্যাসের কারণেই), আপনার ব্যবহার আরও ভাগ্য পেতে পারে rows = sheet.getLastRowNum();। এই অর্থ কি হওয়া উচিত আপনি (মন্তব্য দেখুন) প্রথম লুপ থেকে কৌতুক অপসারণ করতে পারেন: for(int i = 0; i <= rows; i++) {(থেকে পরিবর্তন করে নোট <থেকে <=)।
পেরেসমারিট

এটি আবার খনন করার জন্য দুঃখিত তবে আমার এর মতো একই সমস্যা রয়েছে, যাক আপনার নাম, জন্ম তারিখ, লিঙ্গের 3 টি কলাম রয়েছে। এই কোডটি পড়ে আপনি কীভাবে 3টিকে ভেক্টরকে আলাদা করতে যুক্ত করবেন?
কারেন

কেন কেউ জেএক্সআই ব্যবহারের বিকল্প দেয় নি
মহেন্দ্র রেড্ডি ইয়াসা

52

অ্যাপাচি পিওআই আপনার জন্য এটি করতে পারে। বিশেষত এইচএসএসএফ মডিউল। দ্রুত নির্দেশিকা সর্বাধিক কার্যকরী। আপনি যা চান তা এখানে কীভাবে করা যায় - বিশেষ করে একটি শীট তৈরি করুন এবং এটি লিখুন।

Workbook wb = new HSSFWorkbook();
//Workbook wb = new XSSFWorkbook();
CreationHelper createHelper = wb.getCreationHelper();
Sheet sheet = wb.createSheet("new sheet");

// Create a row and put some cells in it. Rows are 0 based.
Row row = sheet.createRow((short)0);
// Create a cell and put a value in it.
Cell cell = row.createCell(0);
cell.setCellValue(1);

// Or do it on one line.
row.createCell(1).setCellValue(1.2);
row.createCell(2).setCellValue(
createHelper.createRichTextString("This is a string"));
row.createCell(3).setCellValue(true);

// Write the output to a file
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();

37

প্রথমে আপনার প্রকল্প শ্রেণীর পথে এই সমস্ত জার ফাইল যুক্ত করুন:

  1. POI-স্ক্র্যাচপ্যাড-3.7-20101029
  2. POI-3.2-ফাইনাল-20081019
  3. POI-3.7-20101029
  4. POI-উদাহরণ-3.7-20101029
  5. POI-ooxml-3.7-20101029
  6. POI-ooxml-স্কিমের-3.7-20101029
  7. xmlbeans-2.3.0
  8. dom4j-1.6.1

একটি এক্সেল ফাইলে লেখার জন্য কোড:

public static void main(String[] args) {
    //Blank workbook
    XSSFWorkbook workbook = new XSSFWorkbook();

    //Create a blank sheet
    XSSFSheet sheet = workbook.createSheet("Employee Data");

    //This data needs to be written (Object[])
    Map<String, Object[]> data = new TreeMap<String, Object[]>();
    data.put("1", new Object[]{"ID", "NAME", "LASTNAME"});
    data.put("2", new Object[]{1, "Amit", "Shukla"});
    data.put("3", new Object[]{2, "Lokesh", "Gupta"});
    data.put("4", new Object[]{3, "John", "Adwards"});
    data.put("5", new Object[]{4, "Brian", "Schultz"});

    //Iterate over data and write to sheet
    Set<String> keyset = data.keySet();

    int rownum = 0;
    for (String key : keyset) 
    {
        //create a row of excelsheet
        Row row = sheet.createRow(rownum++);

        //get object array of prerticuler key
        Object[] objArr = data.get(key);

        int cellnum = 0;

        for (Object obj : objArr) 
        {
            Cell cell = row.createCell(cellnum++);
            if (obj instanceof String) 
            {
                cell.setCellValue((String) obj);
            }
            else if (obj instanceof Integer) 
            {
                cell.setCellValue((Integer) obj);
            }
        }
    }
    try 
    {
        //Write the workbook in file system
        FileOutputStream out = new FileOutputStream(new File("C:\\Documents and Settings\\admin\\Desktop\\imp data\\howtodoinjava_demo.xlsx"));
        workbook.write(out);
        out.close();
        System.out.println("howtodoinjava_demo.xlsx written successfully on disk.");
    } 
    catch (Exception e)
    {
        e.printStackTrace();
    }
}

এক্সেল ফাইল থেকে পড়ার জন্য কোড

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

public static void main(String[] args) {
    try {
        FileInputStream file = new FileInputStream(new File("C:\\Documents and Settings\\admin\\Desktop\\imp data\\howtodoinjava_demo.xlsx"));

        //Create Workbook instance holding reference to .xlsx file
        XSSFWorkbook workbook = new XSSFWorkbook(file);

        //Get first/desired sheet from the workbook
        XSSFSheet sheet = workbook.getSheetAt(0);

        //Iterate through each rows one by one
        Iterator<Row> rowIterator = sheet.iterator();
        while (rowIterator.hasNext())
        {
            Row row = rowIterator.next();
            //For each row, iterate through all the columns
            Iterator<Cell> cellIterator = row.cellIterator();

            while (cellIterator.hasNext()) 
            {
                Cell cell = cellIterator.next();
                //Check the cell type and format accordingly
                switch (cell.getCellType()) 
                {
                    case Cell.CELL_TYPE_NUMERIC:
                        System.out.print(cell.getNumericCellValue() + "\t");
                        break;
                    case Cell.CELL_TYPE_STRING:
                        System.out.print(cell.getStringCellValue() + "\t");
                        break;
                }
            }
            System.out.println("");
        }
        file.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

14

আপনি JExcelApi বিবেচনা করতে পারেন । আমি এটি পিওআইয়ের চেয়ে আরও ভাল ডিজাইন করেছি। এখানে একটি টিউটোরিয়াল আছে


3
আমি টিউটোরিয়াল পৃষ্ঠাটি দেখার চেষ্টা করেছি। মনে হচ্ছে এটি সরিয়ে দেওয়া হয়েছে।
বিক্রম

4
JExcelApi পুরানো (এক্সেল 2003 অবধি) বাইনারি .xls ফাইলগুলির জন্য। অ্যাপাচি পিওআই-এইচএসএসএফ একই পুরানো .xls সম্বোধন করছে, অন্যদিকে অ্যাপাচি পিওআই-এক্সএসএসএফ নতুন (এক্সেল 2007-) .xlsx
এমজিএম

14

এক্সিলাইট : একটি নতুন সহজ এবং খুব শীতল সরঞ্জাম আছে (10x থেকে কেফির)

লিখুন:

public class User { 

  @Column (name="Firstname")
  private String firstName;

  @Column (name="Lastname")
  private String lastName;

  @Column
  private long id; 

  @Column
  private Date birthDate; 
}

Xcelite xcelite = new Xcelite();    
XceliteSheet sheet = xcelite.createSheet("users");
SheetWriter<User> writer = sheet.getBeanWriter(User.class);
List<User> users = new ArrayList<User>();
// ...fill up users
writer.write(users); 
xcelite.write(new File("users_doc.xlsx"));

পড়ুন:

Xcelite xcelite = new Xcelite(new File("users_doc.xlsx"));
XceliteSheet sheet = xcelite.getSheet("users");
SheetReader<User> reader = sheet.getBeanReader(User.class);
Collection<User> users = reader.read();

11

এক্সএলএক্সএক্স ফাইল পড়ার জন্য আমরা অ্যাপাচি পিওআই লিব ব্যবহার করতে পারি এটি ব্যবহার করে দেখুন:

public static void readXLSXFile() throws IOException
    {
        InputStream ExcelFileToRead = new FileInputStream("C:/Test.xlsx");
        XSSFWorkbook  wb = new XSSFWorkbook(ExcelFileToRead);

        XSSFWorkbook test = new XSSFWorkbook(); 

        XSSFSheet sheet = wb.getSheetAt(0);
        XSSFRow row; 
        XSSFCell cell;

        Iterator rows = sheet.rowIterator();

        while (rows.hasNext())
        {
            row=(XSSFRow) rows.next();
            Iterator cells = row.cellIterator();
            while (cells.hasNext())
            {
                cell=(XSSFCell) cells.next();

                if (cell.getCellType() == XSSFCell.CELL_TYPE_STRING)
                {
                    System.out.print(cell.getStringCellValue()+" ");
                }
                else if(cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC)
                {
                    System.out.print(cell.getNumericCellValue()+" ");
                }
                else
                {
                    //U Can Handel Boolean, Formula, Errors
                }
            }
            System.out.println();
        }

    }

9

.csv বা POI অবশ্যই এটি করবে তবে আপনার অ্যান্ডি খানের জেক্সেল সম্পর্কে সচেতন হওয়া উচিত । আমি মনে করি এটি এখন পর্যন্ত এক্সেলের সাথে কাজ করার জন্য সেরা জাভা গ্রন্থাগার।


6
String path="C:\\Book2.xlsx";
try {

        File f = new File( path );
        Workbook wb = WorkbookFactory.create(f);
        Sheet mySheet = wb.getSheetAt(0);
        Iterator<Row> rowIter = mySheet.rowIterator();
        for ( Iterator<Row> rowIterator = mySheet.rowIterator() ;rowIterator.hasNext(); )
        {
            for (  Iterator<Cell> cellIterator = ((Row)rowIterator.next()).cellIterator() ; cellIterator.hasNext() ;  ) 
            {
                System.out.println ( ( (Cell)cellIterator.next() ).toString() );
            }
            System.out.println( " **************************************************************** ");
        }
    } catch ( Exception e )
    {
        System.out.println( "exception" );
        e.printStackTrace();
    }

এবং আপনার প্রকল্পে জারগুলি পোই এবং পোই-অক্সএমএমএল (org.apache.poi) যুক্ত করেছেন তা নিশ্চিত করুন


4

একটি সাধারণ সিএসভি ফাইলের যথেষ্ট হওয়া উচিত


2
সাবধান, আপনি সিএসভিতে যে স্ট্রিং লিখেছেন সেগুলির মধ্যেই আপনাকে কমাগুলি থেকে বাঁচতে হবে।
ব্রায়ান অগ্নিউ 11

আসলে সিএসভিই যথেষ্ট। যদি আপনার ক্ষেত্রগুলিতে কোনও কমা না থাকে তবে কেবল ক্ষেত্রগুলি এবং কমাগুলি মুদ্রণ করা এটি সবচেয়ে সহজ। অন্যথায়, আপনি commons.apache.org/sandbox/csv
Yuval F

2
আমি নই নিশ্চিত একটি CSV হয় , যথেষ্ট যেহেতু প্রশ্ন বিশেষভাবে বলেছেন 'পড়া' এবং 'লেখ' একটি এক্সেল ফাইল। তিনি সিএসভি দিয়ে পালাতে সক্ষম হতে পারেন, তবে তিনি যা চাইছেন তা তা নয়।
ব্রায়ান অ্যাগনিউ

এক্সেলের কিছু আন্তর্জাতিক সংস্করণ বিভাজক হিসাবে কমাগুলির পরিবর্তে সেমিকোলন ব্যবহার করে। এটি জটিলতাও বাড়ায়
রোয়াল্ট

যদি আউটপুটে তারিখগুলি থাকে তবে CSV খুব সহজ হতে পারে।
থরবজর্ন রাভন অ্যান্ডারসন

3

.Xlsx ওয়ার্কবুক থেকে ডেটা পড়ার জন্য আমাদের এক্সএসএসএফওয়ার্কবুক ক্লাস ব্যবহার করা দরকার।

XSSFWorkbook xlsxBook = new XSSFWorkbook(fis);

XSSFSheet sheet = xlsxBook.getSheetAt(0); প্রভৃতি

আমাদের অ্যাপাচি-পোই ৩.৯ ব্যবহার করতে হবে @ http://poi.apache.org/

উদাহরণ সহ বিশদ তথ্যের জন্য দেখুন: http://java-recent.blogspot.in


অ্যাপাচি পিওআইয়ের সাথে আপনার এক্সএলএসএক্সের জন্য এইচএসএসএফ মডিউল এবং এক্সএলএসএক্স ফর্ম্যাটটির জন্য এক্সএসএসএফ মডিউল প্রয়োজন, জেমবক্সের সাথে স্প্রেডশিট উভয় ফর্ম্যাট একই মডিউলে একত্রিত এবং একই এক্সেলফাইল টাইপের সাথে প্রতিনিধিত্ব করা হয়েছে।
নিক্সনউপোসেন

3

অবশ্যই, আপনি নীচের কোডটি দরকারী এবং পড়তে এবং সহজেই লিখতে পারবেন find এটি এমন একটি utilশ্রেণী যা আপনি আপনার মূল পদ্ধতিতে ব্যবহার করতে পারেন এবং তারপরে নীচের সমস্ত পদ্ধতি ব্যবহার করা আপনার পক্ষে ভাল।

     public class ExcelUtils {
     private static XSSFSheet ExcelWSheet;
     private static XSSFWorkbook ExcelWBook;
     private static XSSFCell Cell;
     private static XSSFRow Row;
     File fileName = new File("C:\\Users\\satekuma\\Pro\\Fund.xlsx");
     public void setExcelFile(File Path, String SheetName) throws Exception                

    try {
        FileInputStream ExcelFile = new FileInputStream(Path);
        ExcelWBook = new XSSFWorkbook(ExcelFile);
        ExcelWSheet = ExcelWBook.getSheet(SheetName);
    } catch (Exception e) {
        throw (e);
    }

}


      public static String getCellData(int RowNum, int ColNum) throws Exception {

    try {
        Cell = ExcelWSheet.getRow(RowNum).getCell(ColNum);
        String CellData = Cell.getStringCellValue();
        return CellData;
    } catch (Exception e) {

        return "";

    }

}
public static void setCellData(String Result, int RowNum, int ColNum, File Path) throws Exception {

    try {
        Row = ExcelWSheet.createRow(RowNum - 1);
        Cell = Row.createCell(ColNum - 1);
        Cell.setCellValue(Result);
        FileOutputStream fileOut = new FileOutputStream(Path);
        ExcelWBook.write(fileOut);
        fileOut.flush();
        fileOut.close();
    } catch (Exception e) {

        throw (e);

    }

}

}

2

স্প্রিং অ্যাপাচি পোই রেপো ব্যবহার করে

if (fileName.endsWith(".xls")) {



File myFile = new File("file location" + fileName);
                FileInputStream fis = new FileInputStream(myFile);

                org.apache.poi.ss.usermodel.Workbook workbook = null;
                try {
                    workbook = WorkbookFactory.create(fis);
                } catch (InvalidFormatException e) {

                    e.printStackTrace();
                }


                org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheetAt(0);


                Iterator<Row> rowIterator = sheet.iterator();


                while (rowIterator.hasNext()) {
                    Row row = rowIterator.next();

                    Iterator<Cell> cellIterator = row.cellIterator();
                    while (cellIterator.hasNext()) {

                        Cell cell = cellIterator.next();
                        switch (cell.getCellType()) {
                        case Cell.CELL_TYPE_STRING:
                            System.out.print(cell.getStringCellValue());
                            break;
                        case Cell.CELL_TYPE_BOOLEAN:
                            System.out.print(cell.getBooleanCellValue());
                            break;
                        case Cell.CELL_TYPE_NUMERIC:
                            System.out.print(cell.getNumericCellValue());
                            break;
                        }
                        System.out.print(" - ");
                    }
                    System.out.println();
                }
            }

1

আমি সবচেয়ে বেশি ভোট প্রাপ্ত একজনকে সামান্য সম্পাদনা করে এটি ফাঁকা কলামগুলি বা সারিগুলি সম্পূর্ণরূপে গণনা করে না, তাই এখানে আমার কোডটি আমি এটি পরীক্ষা করেছি এবং এখন কোনও এক্সেল ফাইলের যে কোনও অংশে যে কোনও ঘর পেতে পারে। এছাড়াও এখন ভরাট কলামের মধ্যে আপনার ফাঁকা কলাম থাকতে পারে এবং এটি সেগুলি পড়বে

  try {
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(Dir));
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
HSSFRow row;
HSSFCell cell;

int rows; // No of rows
rows = sheet.getPhysicalNumberOfRows();

int cols = 0; // No of columns
int tmp = 0;
int cblacks=0;

// This trick ensures that we get the data properly even if it doesn't start from first few rows
for(int i = 0; i <= 10 || i <= rows; i++) {
    row = sheet.getRow(i);
    if(row != null) {
        tmp = sheet.getRow(i).getPhysicalNumberOfCells();
        if(tmp >= cols) cols = tmp;else{rows++;cblacks++;}
    }

    cols++;
}
cols=cols+cblacks;
for(int r = 0; r < rows; r++) {
    row = sheet.getRow(r);
    if(row != null) {
        for(int c = 0; c < cols; c++) {
            cell = row.getCell(c);
            if(cell != null) {
                System.out.print(cell+"\n");//Your Code here
            }
        }
    }
}} catch(Exception ioe) {
ioe.printStackTrace();}

1

যদি কলাম নম্বরটি পরিবর্তিত হয় তবে আপনি এটি ব্যবহার করতে পারেন

package com.org.tests;
import org.apache.poi.xssf.usermodel.*;
import java.io.FileInputStream;
import java.io.IOException;

public class ExcelSimpleTest 
{   
    String path;
    public FileInputStream fis = null;
    private XSSFWorkbook workbook = null;
    private XSSFSheet sheet = null;
    private XSSFRow row   =null;
    private XSSFCell cell = null;

    public ExcelSimpleTest() throws IOException
    {
        path = System.getProperty("user.dir")+"\\resources\\Book1.xlsx";
        fis = new FileInputStream(path); 
        workbook = new XSSFWorkbook(fis);
        sheet = workbook.getSheetAt(0);
    }
    public void ExelWorks()
    {
        int index = workbook.getSheetIndex("Sheet1");
        sheet = workbook.getSheetAt(index);
        int rownumber=sheet.getLastRowNum()+1;  

        for (int i=1; i<rownumber; i++ )
        {
            row = sheet.getRow(i);
            int colnumber = row.getLastCellNum();
            for (int j=0; j<colnumber; j++ )
            {
                cell = row.getCell(j);
                System.out.println(cell.getStringCellValue());
            }
        }
    }   
    public static void main(String[] args) throws IOException 
    {
        ExcelSimpleTest excelwork = new ExcelSimpleTest();
        excelwork.ExelWorks();
    }
}

সংশ্লিষ্ট মাভেনডেপেন্ডেন্সী এখানে পাওয়া যাবে


বিস্তৃত, বারিংয়ের উপর পরিবর্তিত
রোয়েল

1

আপনার অ্যাপাচি পিওআই লাইব্রেরি দরকার এবং নীচের এই কোডটি আপনাকে সহায়তা করা উচিত

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Iterator;
    //*************************************************************
    import org.apache.poi.ss.usermodel.Sheet;
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.ss.usermodel.Workbook;
    import org.apache.poi.xssf.usermodel.XSSFSheet;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;

    //*************************************************************
   public class AdvUse {

    private static Workbook wb ; 
    private static Sheet sh ; 
    private static FileInputStream fis ; 
    private static FileOutputStream fos  ; 
    private static Row row  ; 
    private static Cell cell  ;
    private static String ExcelPath ; 

    //*************************************************************
    public static void setEcxelFile(String ExcelPath, String SheetName) throws Exception {
    try {
   File f= new File(ExcelPath); 
   if(!f.exists()){
       f.createNewFile();
       System.out.println("File not Found so created");
   }

    fis = new FileInputStream("./testData.xlsx");
    wb = WorkbookFactory.create(fis); 
    sh = wb.getSheet("SheetName");
    if(sh == null){
        sh = wb.getSheet(SheetName); 
    }
    }catch(Exception e)
    {System.out.println(e.getMessage());
    }
    }

      //*************************************************************
      public static void setCellData(String text , int rowno , int colno){
    try{
        row = sh.getRow(rowno);
        if(row == null){
            row = sh.createRow(rowno);
        }
        cell = row.getCell(colno);
        if(cell!=null){
            cell.setCellValue(text);

        }
        else{
            cell = row.createCell(colno);
            cell.setCellValue(text);

        }
        fos = new FileOutputStream(ExcelPath);
        wb.write(fos);
        fos.flush();
        fos.close();
    }catch(Exception e){
        System.out.println(e.getMessage());
    }
    }

      //*************************************************************
      public static String getCellData(int rowno , int colno){
        try{

            cell = sh.getRow(rowno).getCell(colno); 
            String CellData = null ;
            switch(cell.getCellType()){
            case  STRING :
                CellData = cell.getStringCellValue();
               break ; 
            case NUMERIC : 
                CellData = Double.toString(cell.getNumericCellValue());
                if(CellData.contains(".o")){
                    CellData = CellData.substring(0,CellData.length()-2);

                }
            break ; 
            case BLANK : 
            CellData = ""; break ; 

            }
            return CellData;
        }catch(Exception e){return ""; }
    }

       //*************************************************************
      public static int getLastRow(){
        return sh.getLastRowNum();
    }

0

এক্সেল ফাইলগুলি পড়ার / লেখার আরেকটি উপায় হ'ল উইন্ডমিল ব্যবহার করা । এটি এক্সেল এবং সিএসভি ফাইলগুলি প্রক্রিয়া করার জন্য একটি সাবলীল এপিআই সরবরাহ করে।

তথ্য আমদানি

try (Stream<Row> rowStream = Windmill.parse(FileSource.of(new FileInputStream("myFile.xlsx")))) {
  rowStream
    // skip the header row that contains the column names
    .skip(1)
    .forEach(row -> {
      System.out.println(
        "row n°" + row.rowIndex()
        + " column 'User login' value : " + row.cell("User login").asString()
        + " column n°3 number value : " + row.cell(2).asDouble().value() // index is zero-based
      );
    });
}

রপ্তানি তথ্য

Windmill
  .export(Arrays.asList(bean1, bean2, bean3))
  .withHeaderMapping(
    new ExportHeaderMapping<Bean>()
      .add("Name", Bean::getName)
      .add("User login", bean -> bean.getUser().getLogin())
  )
  .asExcel()
  .writeTo(new FileOutputStream("Export.xlsx"));

0

আপনি একই ফাইলটি সমান্তরালে ( পঠন-লেখার লক ) পড়তে বা লিখতে পারবেন না । তবে, আমরা অস্থায়ী ডেটার (যেমন ইনপুট / আউটপুট স্ট্রিম) উপর সমান্তরাল অপারেশন করতে পারি। ইনপুট স্ট্রিমটি বন্ধ করার পরে ফাইলটিতে ডেটা লিখুন। নীচে পদক্ষেপগুলি অনুসরণ করা উচিত।

  • ইনপুট স্ট্রিমে ফাইলটি খুলুন
  • আউটপুট স্ট্রিমে একই ফাইলটি খুলুন
  • প্রক্রিয়াটি পড়ুন এবং করুন
  • আউটপুট স্ট্রিমে সামগ্রী লিখুন।
  • পঠন / ইনপুট স্ট্রিম বন্ধ করুন, ফাইল বন্ধ করুন
  • আউটপুট স্ট্রিম বন্ধ করুন, ফাইল বন্ধ করুন।

অ্যাপাচি পিওআই - একই এক্সেল উদাহরণটি পড়ুন / লিখুন

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;


public class XLSXReaderWriter {

    public static void main(String[] args) {

        try {
            File excel = new File("D://raju.xlsx");
            FileInputStream fis = new FileInputStream(excel);
            XSSFWorkbook book = new XSSFWorkbook(fis);
            XSSFSheet sheet = book.getSheetAt(0);

            Iterator<Row> itr = sheet.iterator();

            // Iterating over Excel file in Java
            while (itr.hasNext()) {
                Row row = itr.next();

                // Iterating over each column of Excel file
                Iterator<Cell> cellIterator = row.cellIterator();
                while (cellIterator.hasNext()) {

                    Cell cell = cellIterator.next();

                    switch (cell.getCellType()) {
                    case Cell.CELL_TYPE_STRING:
                        System.out.print(cell.getStringCellValue() + "\t");
                        break;
                    case Cell.CELL_TYPE_NUMERIC:
                        System.out.print(cell.getNumericCellValue() + "\t");
                        break;
                    case Cell.CELL_TYPE_BOOLEAN:
                        System.out.print(cell.getBooleanCellValue() + "\t");
                        break;
                    default:

                    }
                }
                System.out.println("");
            }

            // writing data into XLSX file
            Map<String, Object[]> newData = new HashMap<String, Object[]>();
            newData.put("1", new Object[] { 1d, "Raju", "75K", "dev",
                    "SGD" });
            newData.put("2", new Object[] { 2d, "Ramesh", "58K", "test",
                    "USD" });
            newData.put("3", new Object[] { 3d, "Ravi", "90K", "PMO",
                    "INR" });

            Set<String> newRows = newData.keySet();
            int rownum = sheet.getLastRowNum();

            for (String key : newRows) {
                Row row = sheet.createRow(rownum++);
                Object[] objArr = newData.get(key);
                int cellnum = 0;
                for (Object obj : objArr) {
                    Cell cell = row.createCell(cellnum++);
                    if (obj instanceof String) {
                        cell.setCellValue((String) obj);
                    } else if (obj instanceof Boolean) {
                        cell.setCellValue((Boolean) obj);
                    } else if (obj instanceof Date) {
                        cell.setCellValue((Date) obj);
                    } else if (obj instanceof Double) {
                        cell.setCellValue((Double) obj);
                    }
                }
            }

            // open an OutputStream to save written data into Excel file
            FileOutputStream os = new FileOutputStream(excel);
            book.write(os);
            System.out.println("Writing on Excel file Finished ...");

            // Close workbook, OutputStream and Excel file to prevent leak
            os.close();
            book.close();
            fis.close();

        } catch (FileNotFoundException fe) {
            fe.printStackTrace();
        } catch (IOException ie) {
            ie.printStackTrace();
        }
    }
}

0

দয়া করে অ্যাপাচি পিওআই লাইব ব্যবহার করুন এবং এটি ব্যবহার করে দেখুন।

    try
    {
        FileInputStream x = new FileInputStream(new File("/Users/rajesh/Documents/rajesh.xls"));

        //Create Workbook instance holding reference to .xlsx file
        Workbook workbook = new HSSFWorkbook(x);

        //Get first/desired sheet from the workbook
        Sheet sheet = workbook.getSheetAt(0);

        //Iterate through each rows one by one
        for (Iterator<Row> iterator = sheet.iterator(); iterator.hasNext();) {
            Row row = (Row) iterator.next();
            for (Iterator<Cell> iterator2 = row.iterator(); iterator2
                    .hasNext();) {
                Cell cell = (Cell) iterator2.next();
                System.out.println(cell.getStringCellValue());              
            }               
        }         
        x.close();
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
   }
}

0

অ্যাপাচি পোই ব্যবহার করার সময় 4.1.2। সেল্টিপ কিছুটা বদলে যায়। নীচে একটি উদাহরণ দেওয়া আছে

    try {
        File excel = new File("/home/name/Downloads/bb.xlsx");
        FileInputStream fis = new FileInputStream(excel);
        XSSFWorkbook book = new XSSFWorkbook(fis);
        XSSFSheet sheet = book.getSheetAt(0);

        Iterator<Row> itr = sheet.iterator();

        // Iterating over Excel file in Java
        while (itr.hasNext()) {
            Row row = itr.next();

            Iterator<Cell> cellIterator = row.cellIterator();
            while (cellIterator.hasNext()) {



                Cell cell = cellIterator.next();



                switch (cell.getCellType()) {
                case STRING:
                    System.out.print(cell.getStringCellValue() + "\t");
                    break;
                case NUMERIC:
                    System.out.print(cell.getNumericCellValue() + "\t");
                    break;
                case BOOLEAN:
                    System.out.print(cell.getBooleanCellValue() + "\t");
                    break;
                default:


                }
            }
            System.out.println("");}
        }catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }

-1

জাভাতে অফিসের নথিগুলির সাথে আপনার আরও কিছু করার দরকার থাকলে, উল্লিখিত হিসাবে পিওআই-তে যান।

আপনার অনুরোধ মতো একটি সহজ দস্তাবেজ পড়ার / লেখার জন্য, আপনি সিএসভি ফর্ম্যাটটি ব্যবহার করতে পারেন (উল্লিখিত হিসাবেও):

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

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

  String fileName = "test.xls";

  PrintWriter out = new PrintWriter(new FileWriter(fileName));
  out.println("a,b,c,d");
  out.println("e,f,g,h");
  out.println("i,j,k,l");
  out.close();

  BufferedReader in = new BufferedReader(new FileReader(fileName));
  String line = null;
  while ((line = in.readLine()) != null) {

   Scanner scanner = new Scanner(line);
   String sep = "";
   while (scanner.hasNext()) {
    System.out.println(sep + scanner.next());
    sep = ",";
   }
  }
  in.close();
 }
}

-1

এটি কোনও ট্যাবে বিযুক্ত ফাইলটিতে একটি জেটিবেল লিখবে যা সহজেই এক্সেলের মাধ্যমে আমদানি করা যায়। এইটা কাজ করে.

যদি আপনি কোনও এক্সএমএল ডকুমেন্ট হিসাবে কোনও এক্সেল ওয়ার্কশিট সংরক্ষণ করেন আপনি কোড সহ এক্সকেলের জন্য এক্সএমএল ফাইলও তৈরি করতে পারেন। আমি এটি শব্দ দিয়ে করেছি যাতে আপনাকে তৃতীয় পক্ষের প্যাকেজগুলি ব্যবহার করতে হবে না।

এই কোডটি JTable কে বের করে আনতে পারে এবং তারপরে কোনও টেক্সট ফাইলের সাথে পৃথক করে একটি ট্যাব লিখতে পারে এবং তারপরে এক্সেলে আমদানি করতে পারে। আশা করি এটা কাজে লাগবে.

কোড:

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JTable;
import javax.swing.table.TableModel;

public class excel {
    String columnNames[] = { "Column 1", "Column 2", "Column 3" };

    // Create some data
    String dataValues[][] =
    {
        { "12", "234", "67" },
        { "-123", "43", "853" },
        { "93", "89.2", "109" },
        { "279", "9033", "3092" }
    };

    JTable table;

    excel() {
        table = new JTable( dataValues, columnNames );
    }


    public void toExcel(JTable table, File file){
        try{
            TableModel model = table.getModel();
            FileWriter excel = new FileWriter(file);

            for(int i = 0; i < model.getColumnCount(); i++){
                excel.write(model.getColumnName(i) + "\t");
            }

            excel.write("\n");

            for(int i=0; i< model.getRowCount(); i++) {
                for(int j=0; j < model.getColumnCount(); j++) {
                    excel.write(model.getValueAt(i,j).toString()+"\t");
                }
                excel.write("\n");
            }

            excel.close();

        }catch(IOException e){ System.out.println(e); }
    }

    public static void main(String[] o) {
        excel cv = new excel();
        cv.toExcel(cv.table,new File("C:\\Users\\itpr13266\\Desktop\\cs.tbv"));
    }
}

(আপনি কেবল JTable মধ্যে স্ট্রিং অ্যারে সংরক্ষণ করা হয়, এবং একটি ট্যাব-সেপারেটেড "যে CSV" ফাইল wrinting জন্য স্ট্রিংস ফিরে পেতে JTable এই অ্যালগোরিদমের মধ্যে প্রযোজন নেই ...।)
এমজিএম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.