পিএইচপি-তে একটি এক্সেল ফাইল পড়া [বন্ধ]


101

আমি একটি এক্সেল ফাইল (অফিস 2003) পড়ার চেষ্টা করছি। একটি এক্সেল ফাইল রয়েছে যা আপলোড করতে হবে এবং এর সামগ্রীগুলি বিশ্লেষণ করতে হবে।

গুগলের মাধ্যমে, আমি কেবলমাত্র এই সম্পর্কিত (এবং অপর্যাপ্ত বিষয়গুলি) এর উত্তরগুলি খুঁজে পেতে পারি: এক্সেল ফাইল তৈরি করা, এক্সেল এক্সএমএল ফাইলগুলি পড়া, এক্সেল সিএসভি ফাইলগুলি পড়া বা অসম্পূর্ণ পরিত্যক্ত প্রকল্পগুলি। আমি অফিস 2003 এর মালিক তাই আমার যদি সেখান থেকে কোনও ফাইলের প্রয়োজন হয় তবে সেগুলি উপলভ্য। এটি আমার বাক্সে ইনস্টল করা হয়েছে তবে এটি আমার ভাগ করা হোস্টে ইনস্টল করা যাবে না।

সম্পাদনা করুন: এখনও পর্যন্ত সমস্ত উত্তর পিএইচপি-এক্সেলআরডার এবং / অথবা এটি কীভাবে ব্যবহার করবেন সে সম্পর্কে এই অতিরিক্ত নিবন্ধকে নির্দেশ করে।



4
সম্পাদনার দুটি লিঙ্কটি ভেঙে গেছে!
হুয়ারি

ঠিক যেমন github.com / পিএইচপিওফিস / পিএইচপি স্প্রেডশিটে একটি আপডেট পিএইচপি স্প্রেডশিট এখন
এটির

উত্তর:


52

আমি এক্সএলএস ফাইলগুলি পড়তে পিএইচপি-এক্সেলআরডার ব্যবহার করি এবং দুর্দান্ত কাজ করে।


8
এটি আমার জন্য কাজ করছে না, আমার পিএইচপি 5.2+ রয়েছে, আমাকে ত্রুটি দিন "নতুন উল্লেখের সাথে রেফারেন্স নির্ধারণ করা অবমূল্যায়ন করা হয়"
হার্দিক রাওয়াল

এখানে @hRaval একই, আপনি কি এর জন্য পরে কোনও সমাধান খুঁজে পেয়েছেন ??
aslamdoctor

6
ওহে ছেলেরা, আমি এটি সাম্প্রতিক পিএইচপি 5 সংস্করণের সাথে সামঞ্জস্য করার জন্য কয়েকটি জিনিস স্থির করেছি: পেস্টবিন.com / ওয়াইএনজ্যাঙ্কস সমস্ত ক্রেডিট আসল বিকাশকারীদের কাছে যায়।
লার্স গিরুপ ব্রিংক নীলসন

রেফারেন্স অনুসারে নতুনের ফেরতের মান নির্ধারণ করা
অবনমিত হয়

5
আমি যেমন এটি বুঝতে পারি, পিএইচপি-এক্সেলআরডার এমন এক শ্রেণি যা .xls-ফাইলগুলি পরিচালনা করতে পারে, তবে। Xlsx ফাইলগুলি নয়। PHPExcel অনেকগুলি বিভিন্ন ফর্ম্যাটগুলি (.xls এবং .xlsx সহ) পরিচালনা করতে পারে ( github.com/PHPOffice/Phpexcel ) এবং স্থিতিশীল সংস্করণে। পিএইচপিএসস্প্রেডশিট পিএইচপিইএক্সসেলের আরও বিকাশ তবে স্থিতিশীল নয় (যেমনটি আমি এটি লিখছি): github.com/PHPOffice/PhpS
प्रे

60

আমার জানা মতে আপনার কাছে দুটি পছন্দ রয়েছে:

  1. স্প্রেডশিট_এক্সেল_প্রেডার , যা অফিস 2003 বাইনারি ফর্ম্যাটটি জানে
  2. পিএইপপিএক্সেল , যা অফিস 2003 পাশাপাশি এক্সেল 2007 (এক্সএমএল) উভয়ই জানে। (লিঙ্কটি অনুসরণ করুন এবং আপনি এই লাইব্রেরিকে পিএইচপিএসস্প্রেডশীটে আপগ্রেড করতে দেখবেন )

পিএইপপিএক্সেক্সেল অফিস 2003 ফর্ম্যাটের জন্য স্প্রেডশিট_এক্সসেল_রেডার ব্যবহার করে।

আপডেট: আমাকে একবার কয়েকটি এক্সেল ফাইলগুলি পড়তে হয়েছিল তবে আমি সেগুলি পড়ার জন্য অফিস 2003 এক্সএমএল ফর্ম্যাটটি ব্যবহার করেছিলাম এবং অ্যাপ্লিকেশনটি কেবলমাত্র এই ধরণের এক্সেল ফাইলটি সংরক্ষণ এবং আপলোড করার জন্য ব্যবহার করেছিলাম।


@ এনটিউলিপ: আমি এক্সেল ফাইলগুলি থেকে পড়তে পারি সে জন্য প্রস্তাবিত বৈশিষ্ট্য তালিকা বা নথির কোনও কিছুই দেখতে পাচ্ছি না। কোন উদাহরণ?
দিনাহ

@ দিনাহ, আপনি ঠিক বলেছেন আমি আমার প্রতিক্রিয়া যথাযথ পরিবর্তন করেছি।
আয়নু জি স্টান

4
PHPExcel সর্বদা স্প্রেডশিট ফর্ম্যাটগুলির একটি পরিসীমা পড়তে এবং লিখতে সক্ষম হয়েছে। হোম পৃষ্ঠার প্রথম অ-শিরোনাম লাইন থেকে উদ্ধৃতি দিয়েছিলেন: "প্রকল্প পিএইচপি প্রোগ্রামিং ভাষার জন্য শ্রেণীর একটি সেট সরবরাহ করে যা আপনাকে এক্সেল 2007, পিডিএফ, এইচটিএমএলের মতো বিভিন্ন ফাইল ফর্ম্যাট থেকে লিখতে এবং পড়তে দেয় " (আমার জোর )
মার্ক বাকের

20

এটি এক্সেল ফাইলে আপনি কীভাবে ডেটা ব্যবহার করতে চান তার উপর নির্ভর করে। আপনি যদি এটি mysql এ আমদানি করতে চান তবে আপনি কেবল এটি CSV ফর্ম্যাট ফাইল হিসাবে সংরক্ষণ করতে পারেন এবং তারপরে পার্স করার জন্য fgetcsv ব্যবহার করতে পারেন।


18

এক্সএলএসএক্স (এক্সেল 97-2003)
https://github.com/shuchkin/simplexls পড়ুন

if ( $xls = SimpleXLS::parse('book.xls') ) {
    print_r( $xls->rows() );
} else {
    echo SimpleXLS::parseError();
}

এক্সএলএসএক্স (এক্সেল 2003+)
https://github.com/shuchkin/simplexlsx পড়ুন

if ( $xlsx = SimpleXLSX::parse('book.xlsx') ) {
    print_r( $xlsx->rows() );
} else {
    echo SimpleXLSX::parseError();
}

আউটপুট

অ্যারে (
    [0] => অ্যারে
        (
            [0] => আইএসবিএন
            [1] => শিরোনাম
            [2] => লেখক
            [3] => প্রকাশক
            [4] => ক্রিট
        )
    [1] => অ্যারে
        (
            [0] => 618260307
            [1] => দ্য হবিট
            [2] => জেআরআর টলকিয়েন
            [3] => হাউটন মিফলিন
            [4] => মার্কিন যুক্তরাষ্ট্র
       )

)

CSV পিএইচপি পাঠক
https://github.com/shuchkin/simplecsv


4
এই উত্তরটিই পিএইচপি 7 ব্যবহার করে আমার সমস্যার সমাধান করেছে
জয় কোহেন

4

এটা চেষ্টা কর...

"Xls এবং xlsx" পড়তে আমি নিম্নলিখিত কোডগুলি ব্যবহার করেছি

    <?php
    include 'excel_reader.php';       // include the class
    $excel = new PhpExcelReader;      // creates object instance of the class
    $excel->read('excel_file.xls');   // reads and stores the excel file data

    // Test to see the excel data stored in $sheets property
    echo '<pre>';
    var_export($excel->sheets);

    echo '</pre>';

    or 

 echo '<pre>';
    print_r($excel->sheets);

    echo '</pre>';

তথ্যসূত্র: http://coursesweb.net/php-mysql/read-excel-file-data-php_pc


এটি পারস্য ভাষাটি চিনতে পারে না
মোহাম্মদহসিন আর

@ দেইনন্ধায়ালান আমি কি এক্সেল_রিডার.এফপি লাইব্রেরি পেতে পারি?
আশা

4
// Here is the simple code using COM object in PHP
class Excel_ReadWrite{

    private $XLSHandle;
    private $WrkBksHandle;
    private $xlBook;

    function __construct() {
        $this->XLSHandle = new COM("excel.application") or die("ERROR: Unable to instantaniate COM!\r\n"); 
    }

    function __destruct(){
        //if already existing file is opened
        if($this->WrkBksHandle != null)
        {   
            $this->WrkBksHandle->Close(True);
            unset($this->WrkBksHandle);
            $this->XLSHandle->Workbooks->Close();
        }
        //if created new xls file
        if($this->xlBook != null)
        {
            $this->xlBook->Close(True);
            unset($this->xlBook);
        }
        //Quit Excel Application
        $this->XLSHandle->Quit();
        unset($this->XLSHandle);
    }

    public function OpenFile($FilePath)
    {
        $this->WrkBksHandle = $this->XLSHandle->Workbooks->Open($FilePath);
    }

    public function ReadData($RowNo, $ClmNo)
    {
       $Value = $this->XLSHandle->ActiveSheet->Cells($RowNo, $ClmNo)->Value;
       return $Value;
    }  

    public function SaveOpenedFile()
    {
        $this->WrkBksHandle->Save(); 
    }  

    /***********************************************************************************
    * Function Name:- WriteToXlsFile() will write data based on row and column numbers
    * @Param:- $CellData- cell data
    * @Param:- $RowNumber- xlsx file row number
    * @Param:- $ColumnNumber- xlsx file column numbers
   ************************************************************************************/
   function WriteToXlsFile($CellData, $RowNumber, $ColumnNumber)
   {
       try{
               $this->XLSHandle->ActiveSheet->Cells($RowNumber,$ColumnNumber)->Value = $CellData;
           }
       catch(Exception $e){
               throw new Exception("Error:- Unable to write data to xlsx sheet");
           }
   }


   /****************************************************************************************
    * Function Name:- CreateXlsFileWithClmName() will initialize xls file with column Names
    * @Param:- $XlsColumnNames- Array of columns data
    * @Param:- $XlsColumnWidth- Array of columns width
   *******************************************************************************************/
   function CreateXlsFileWithClmNameAndWidth($WorkSheetName = "Raman", $XlsColumnNames = null, $XlsColumnWidth = null)
   {
       //Hide MS Excel application window
       $this->XLSHandle->Visible = 0;
       //Create new document
       $this->xlBook = $this->XLSHandle->Workbooks->Add();

       //Create Sheet 1
       $this->xlBook->Worksheets(1)->Name = $WorkSheetName;
       $this->xlBook->Worksheets(1)->Select;

       if($XlsColumnWidth != null)
       {
           //$XlsColumnWidth = array("A1"=>15,"B1"=>20);
           foreach($XlsColumnWidth as $Clm=>$Width)
           {
               //Set Columns Width
               $this->XLSHandle->ActiveSheet->Range($Clm.":".$Clm)->ColumnWidth = $Width;
           }    
       }
       if($XlsColumnNames != null)
       {
           //$XlsColumnNames = array("FirstColumnName"=>1, "SecondColumnName"=>2);
           foreach($XlsColumnNames as $ClmName=>$ClmNumber)
           {
               // Cells(Row,Column)
               $this->XLSHandle->ActiveSheet->Cells(1,$ClmNumber)->Value = $ClmName;
               $this->XLSHandle->ActiveSheet->Cells(1,$ClmNumber)->Font->Bold = True;
               $this->XLSHandle->ActiveSheet->Cells(1,$ClmNumber)->Interior->ColorIndex = "15";
           }
       }
   }
   //56 is for xls 8
    public function SaveCreatedFile($FileName, $FileFormat = 56)
    {
        $this->xlBook->SaveAs($FileName, $FileFormat);
    }

    public function MakeFileVisible()
    {
       //Hide MS Excel application window`enter code here`
       $this->XLSHandle->Visible = 1;
    }
}//end of EXCEL class

4
আপনার পিএইচপি সার্ভারটি যদি উইন্ডোজ চলমান থাকে এবং এক্সেল ইনস্টল করা থাকে তবে এটি দুর্দান্ত দেখাচ্ছে।
মার্টিন বুর্চ

2

আমি নীচে এক্সেল ফাইল ইউআরএল ব্যবহার করছি: https://github.com/inventorbala/Sample-Excel-files/blob/master/sample-excel-files.xlsx

আউটপুট:

Array
    (
        [0] => Array
            (
                [store_id] => 3716
                [employee_uid] => 664368
                [opus_id] => zh901j
                [item_description] => PRE ATT $75 PNLS 90EXP
                [opus_transaction_date] => 2019-10-18
                [opus_transaction_num] => X2MBV1DJKSLQW
                [opus_invoice_num] => O3716IN3409
                [customer_name] => BILL PHILLIPS
                [mobile_num] => 4052380136
                [opus_amount] => 75
                [rq4_amount] => 0
                [difference] => -75
                [ocomment] => Re-Upload: We need RQ4 transaction for October.  If you're unable to provide the October invoice, it will be counted as EPin shortage.
                [mark_delete] => 0
                [upload_date] => 2019-10-20
            )

        [1] => Array
            (
                [store_id] => 2710
                [employee_uid] => 75899
                [opus_id] => dc288t
                [item_description] => PRE ATT $50 PNLS 90EXP
                [opus_transaction_date] => 2019-10-18
                [opus_transaction_num] => XJ90419JKT9R9
                [opus_invoice_num] => M2710IN868
                [customer_name] => CALEB MENDEZ
                [mobile_num] => 6517672079
                [opus_amount] => 50
                [rq4_amount] => 0
                [difference] => -50
                [ocomment] => No Response.  Re-Upload
                [mark_delete] => 0
                [upload_date] => 2019-10-20
            )

        [2] => Array
            (
                [store_id] => 0136
                [employee_uid] => 70167
                [opus_id] => fv766x
                [item_description] => PRE ATT $50 PNLS 90EXP
                [opus_transaction_date] => 2019-10-18
                [opus_transaction_num] => XQ57316JKST1V
                [opus_invoice_num] => GONZABP25622
                [customer_name] => FAUSTINA CASTILLO
                [mobile_num] => 8302638628
                [opus_amount] => 100
                [rq4_amount] => 50
                [difference] => -50
                [ocomment] => Re-Upload: We have been charged in opus for $100. Provide RQ4 invoice number for remaining amount
                [mark_delete] => 0
                [upload_date] => 2019-10-20
            )

        [3] => Array
            (
                [store_id] => 3264
                [employee_uid] => 23723
                [opus_id] => aa297h
                [item_description] => PRE ATT $25 PNLS 90EXP
                [opus_transaction_date] => 2019-10-19
                [opus_transaction_num] => XR1181HJKW9MP
                [opus_invoice_num] => C3264IN1588
                [customer_name] => SOPHAT VANN
                [mobile_num] => 9494668372
                [opus_amount] => 70
                [rq4_amount] => 25
                [difference] => -45
                [ocomment] => No Response.  Re-Upload
                [mark_delete] => 0
                [upload_date] => 2019-10-20
            )

        [4] => Array
            (
                [store_id] => 4166
                [employee_uid] => 568494
                [opus_id] => ab7598
                [item_description] => PRE ATT $40 RTR
                [opus_transaction_date] => 2019-10-20
                [opus_transaction_num] => X8F58P3JL2RFU
                [opus_invoice_num] => I4166IN2481
                [customer_name] => KELLY MC GUIRE
                [mobile_num] => 6189468180
                [opus_amount] => 40
                [rq4_amount] => 0
                [difference] => -40
                [ocomment] => Re-Upload: The invoice number that you provided (I4166IN2481) belongs to September transaction.  We need RQ4 transaction for October.  If you're unable to provide the October invoice, it will be counted as EPin shortage.
                [mark_delete] => 0
                [upload_date] => 2019-10-21
            )

        [5] => Array
            (
                [store_id] => 4508
                [employee_uid] => 552502
                [opus_id] => ec850x
                [item_description] => $30 RTR
                [opus_transaction_date] => 2019-10-20
                [opus_transaction_num] => XPL7M1BJL1W5D
                [opus_invoice_num] => M4508IN6024
                [customer_name] => PREPAID CUSTOMER
                [mobile_num] => 6019109730
                [opus_amount] => 30
                [rq4_amount] => 0
                [difference] => -30
                [ocomment] => Re-Upload: The invoice number you provided (M4508IN7217) belongs to a different phone number.  We need RQ4 transaction for the phone number in question.  If you're unable to provide the RQ4 invoice for this transaction, it will be counted as EPin shortage.
                [mark_delete] => 0
                [upload_date] => 2019-10-21
            )

        [6] => Array
            (
                [store_id] => 3904
                [employee_uid] => 35818
                [opus_id] => tj539j
                [item_description] => PRE $45 PAYG PINLESS REFILL
                [opus_transaction_date] => 2019-10-20
                [opus_transaction_num] => XM1PZQSJL215F
                [opus_invoice_num] => N3904IN1410
                [customer_name] => DORTHY JONES
                [mobile_num] => 3365982631
                [opus_amount] => 90
                [rq4_amount] => 45
                [difference] => -45
                [ocomment] => Re-Upload: Please email the details to Treasury and confirm
                [mark_delete] => 0
                [upload_date] => 2019-10-21
            )

        [7] => Array
            (
                [store_id] => 1820
                [employee_uid] => 59883
                [opus_id] => cb9406
                [item_description] => PRE ATT $25 PNLS 90EXP
                [opus_transaction_date] => 2019-10-20
                [opus_transaction_num] => XTBJO14JL25OE
                [opus_invoice_num] => SEVIEIN19013
                [customer_name] => RON NELSON
                [mobile_num] => 8653821076
                [opus_amount] => 25
                [rq4_amount] => 5
                [difference] => -20
                [ocomment] => Re-Upload: We have been charged in opus for $25. Provide RQ4 invoice number for remaining amount
                [mark_delete] => 0
                [upload_date] => 2019-10-21
            )

        [8] => Array
            (
                [store_id] => 0178
                [employee_uid] => 572547
                [opus_id] => ms5674
                [item_description] => PRE $45 PAYG PINLESS REFILL
                [opus_transaction_date] => 2019-10-21
                [opus_transaction_num] => XT29916JL4S69
                [opus_invoice_num] => T0178BP1590
                [customer_name] => GABRIEL LONGORIA JR
                [mobile_num] => 4322133450
                [opus_amount] => 45
                [rq4_amount] => 0
                [difference] => -45
                [ocomment] => Re-Upload: Please email the details to Treasury and confirm
                [mark_delete] => 0
                [upload_date] => 2019-10-22
            )

        [9] => Array
            (
                [store_id] => 2180
                [employee_uid] => 7842
                [opus_id] => lm854y
                [item_description] => $30 RTR
                [opus_transaction_date] => 2019-10-21
                [opus_transaction_num] => XC9U712JL4LA4
                [opus_invoice_num] => KETERIN1836
                [customer_name] => PETE JABLONSKI
                [mobile_num] => 9374092680
                [opus_amount] => 30
                [rq4_amount] => 40
                [difference] => 10
                [ocomment] => Re-Upload: Credit the remaining balance to customers account in OPUS and email confirmation to Treasury
                [mark_delete] => 0
                [upload_date] => 2019-10-22
            )


      .
      .
      .
 [63] => Array
            (
                [store_id] => 0175
                [employee_uid] => 33738
                [opus_id] => ph5953
                [item_description] => PRE ATT $40 RTR
                [opus_transaction_date] => 2019-10-21
                [opus_transaction_num] => XE5N31DJL51RA
                [opus_invoice_num] => T0175IN4563
                [customer_name] => WILLIE TAYLOR
                [mobile_num] => 6822701188
                [opus_amount] => 40
                [rq4_amount] => 50
                [difference] => 10
                [ocomment] => Re-Upload: Credit the remaining balance to customers account in OPUS and email confirmation to Treasury
                [mark_delete] => 0
                [upload_date] => 2019-10-22
            ) 

    )

0

আমি "xls এবং xlsx" পড়ার জন্য নিম্নলিখিত কোডগুলি ব্যবহার করেছি:

    include 'PHPExcel/IOFactory.php';

    $location='sample-excel-files.xlsx';

    $objPHPExcel = PHPExcel_IOFactory::load($location);
    $sheet = $objPHPExcel->getSheet(0);
    $total_rows = $sheet->getHighestRow();
    $total_columns = $sheet->getHighestColumn();
    $set_excel_query_all=array();
    for($row =2; $row <= $total_rows; $row++) {
        $singlerow = $sheet->rangeToArray('A' . $row . ':' . $total_columns . $row, NULL, TRUE, FALSE);
        $single_row=$singlerow[0];
        $set_excel_query['store_id']=$single_row[0];
        $set_excel_query['employee_uid']=$single_row[1];
        $set_excel_query['opus_id']=$single_row[2];
        $set_excel_query['item_description']=$single_row[3];
        if($single_row[4])
        {
            $set_excel_query['opus_transaction_date']= date('Y-m-d', PHPExcel_Shared_Date::ExcelToPHP($single_row[4]));
        }
        $set_excel_query['opus_transaction_num']=$single_row[5];
        $set_excel_query['opus_invoice_num']=$single_row[6];
        $set_excel_query['customer_name']=$single_row[7];
        $set_excel_query['mobile_num']=$single_row[8];
        $set_excel_query['opus_amount']=$single_row[9];
        $set_excel_query['rq4_amount']=$single_row[10];
        $set_excel_query['difference']=$single_row[11];
        $set_excel_query['ocomment']=$single_row[12];
        $set_excel_query['mark_delete']=$single_row[13];
        if($single_row[14])
        {
            $set_excel_query['upload_date']= date('Y-m-d', PHPExcel_Shared_Date::ExcelToPHP($single_row[14]));
        }
        $set_excel_query_all[]=$set_excel_query;
    }

   print_r($set_excel_query_all); 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.