Jump to content
Sign in to follow this  
nickngqs

Export CSV for a page

Recommended Posts

Does anyone know how to do an export of a page entries to CSV using the Processwire way?

I'm trying to setup a list where the client can see a list of user's form values.

Example ->

A front end form -> Upon submit -> Adds to database -> Shows on the admin of Processwire.

From there, I can see the entries and sort stuff. And lastly I can export them in CSV.

I'm looking at the Processwire cheatsheet and see the $files, is this the one I should be looking at? 

Share this post


Link to post
Share on other sites

I didn't understood everything but you can take a look at this thread :

 

 

and this module if it help :

 

 

  • Like 2

Share this post


Link to post
Share on other sites

I use something called SimpleExcel to export / import CSV.

http://faisalman.github.io/simple-excel-php/

 

Here's an example code snippet for Export :

$AllPages is just the data source, so you can replace it with your own.
I would also ignore all the col_subcat fields and any associated functions like GetSubCategoryNames.

You can replace 'SSS-Exported' at the bottom to the filename of your choosing.

    public function ProcessXML() {

        $AllPages =  Data::PagesAllContentsNoInteraktives();

        if ($AllPages->count()==0)
            exit;

        $_colTitle  = 0; //A
        $_colCategory=1; //B
        $_colSubcat1 =2; //C
        $_colSubcat2 =3; //D
        $_colSubcat3 =4; //E
        $_colSubcat4 =5; //F
        $_colSubcat5 =6; //G
        $_colContent = 7; //H
        $_colIntro   = 8; //I
        $_colAuthor  = 9;//J
        $_colImage   = 10;//K
        $_colAlt     = 11;//L
        $_colTitleNav= 12;//M
        $_colSEOTitle= 13;//N
        $_colKeywords= 14;//O
        $_colSEOImage= 16;//Q
        $_colMeta    = 15;//P
        $_colURL     = 17;//R
        $_colURLnew  = 18;//S
        $_colCanonical=19;//T
        $_colParent  = 20;//U
        $_colAudio   = 21;//V
        $_colVideo   = 22;//W
        $worksheet = array();

        array_push($worksheet,
        array(
            'Title',
            'Category',
            'Sub-Category I',
            'Sub-Category II',
            'Sub-Category III',
            'Sub-Category IV',
            'Sub-Category V',
            'Content',
            'Intro',
            'Author',
            'Image',
            'Alt',
            'Title for Navigation',
            'SEO Title',
            'Keywords',
            'Meta Description',
            'SEO Image',
            'URL',
            'URL New',
            'Canonical',
            'Parent',
            'Audio',
            'Video URL',
            'ID'
            )
        );

        foreach ($AllPages as $page) {
            try {

                $subcats = GetSubCategoryNames($page);

                $subcat1='';
                $subcat2='';
                $subcat3='';
                $subcat4='';
                $subcat5='';

                try {
                    $subcat1 = $subcats[0];
                    $subcat2 = $subcats[1];
                    $subcat3 = $subcats[2];
                    $subcat4 = $subcats[3];
                    $subcat5 = $subcats[4];
                }
                catch (\Exception $e)
                {}

                array_push($worksheet, array(
                    $page->title,
                    GetCategoryName($page),
                    $subcat1,
                    $subcat2,
                    $subcat3,
                    $subcat4,
                    $subcat5,
                    $page->content,
                    $page->content_intro,
                    $page->author,
                    $page->image,
                    $page->image_alt,
                    $page->title_nav,
                    $page->seo_title,
                    $page->seo_keywords,
                    $page->seo_description,
                    $page->seo_image,
                    $page->url,
                    $page->url,
                    '',
                    $page->seo_canonical,
                    $page->audio,
                    $page->video_url,
                    $page->id
                ));
            }
            catch (\Exception $e) {
                WriteLog($e->getMessage() . " " . "{$page->title}" . " has errors");
            }
        }

        try {
            $excel = new SimpleExcel('xml');

            $excel->writer->setData($worksheet);
            $excel->writer->saveFile('SSS-Exported');
        } catch (\Exception $e) {
            WriteLog($e->getMessage());
        }


    }


 

P/S In case you need to switch from CSV to XML, this post could be of interest.

 

.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By AndZyk
      Hello,
      we have many projects as pages containing images inside regular image fields and repeater matrix elements. Now we would like to organize our assets.
      ProcessWire saves assets with id as folder name and makes separate folders for repeater matrix elements.
      Is there a way to collect all assets of one page and export them in a folder with the page name/title?
      I think I could achieve this by using the command line wget for this website or maybe by a hook. But maybe someone has done this before. 😉
      Regards, Andreas
    • By rjgamer
      Hi,
      is there a hook after the current (active) page got created? Or which method got called in the Page class after the Constructor of the current page got initialized?
      Thanks.
       
    • By rjgamer
      Hi guys,
      the field "redirect_last" of type DateTime got not updated. The update on the field "redirect_counter" works and got saved.
      Does anybody know what I did wrong in my code?
      if ($input->urlSegment(1) === 'redirect') { $page->of(false); $page->redirect_last = time(); $page->redirect_counter += 1; if ($page->save('redirect_counter')) { $session->redirect($page->website_url, 302); } } Thanks.
    • By theoretic
      Hi there! And thanks for Processwire!
      I have an interesting task which i cannot fulfill as i want. Maybe someone could help me please?
      Let's imagine a simple page structure of this kind:
      Category 1
      + Item 1.1
      + Item 1.2
      Category 2
      + Item 2.1
      + Item 2.2
      My task is to attach some items to more than one category, at least to show some items on different frontend category pages. With PW, it's a piece of cake. I've just created a field called Items (of type Page Reference) and attrached it to Category template. Since i have lots of items inside each category i preferred to use Page Autocomplete input for my Items field. The pages available for autocomplete are restricted by a very simple selector:
      template=item
      It works like a charm. But later i decided to make this autocomplete even smarter and to exclude current category children items from it. I tried to update my selector this way...
      template=item,parent!=(page)
      ...and oops, this broke my selector. My autocomplete founds nothing. Sorry, i had to replace the square braces by () because of this forum limitations, i swear i'm using square brackets in real-life selector!
      What am i doing wrong? And is there any way to include current page info in autocomplete-related selectors? Thanks in advance!
       
    • By Vineet Sawant
      Hi,
      I'm trying to import some heavy data into Processwire, but I'm not sure what would be the best way to do it.
      Usually I use CSV to Pages plugin, but this time the data is too heavy(~40k rows with 10+ columns of excel sheet), thus this plugin can't help.
      I also tried Tasker plugin but I can't seem to go through the setup itself, it requires some template setup but I'm totally clueless about how to do it, so that plugin is not of any use either.
      I wanted to know from you guys how you do it and in future what would be the best way to migrate thousands of rows of data in to PW.
       
      Thanks.
       
       
×
×
  • Create New...