{"id":28580,"date":"2021-05-25T11:26:00","date_gmt":"2021-05-25T08:26:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28580"},"modified":"2021-10-17T04:39:39","modified_gmt":"2021-10-17T01:39:39","slug":"hur-man-exporterar-mysql-databasdata-till-excel-med-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/sv\/hur-man-exporterar-mysql-databasdata-till-excel-med-php\/","title":{"rendered":"Hur man exporterar MySQL-databasdata till Excel med PHP"},"content":{"rendered":"<p>Nyligen publicerade jag en artikel <a href=\"https:\/\/themewp.inform.click\/sv\/hur-man-laser-csv-och-excel-filer-i-php-med-hjalp-av-phpspreadsheet\/\" title=\"Hur man l\u00e4ser CSV- och Excel-filer i PHP med hj\u00e4lp av PhpSpreadsheet\" >Hur man l\u00e4ser CSV- och Excel-filer i PHP med hj\u00e4lp av PhpSpreadsheet<\/a> och en av l\u00e4sarna fr\u00e5gade om att exportera MySQL-databasposter till Excel-fil. Anv\u00e4ndaren kan beh\u00f6va sin data i Excel- eller CSV-filen s\u00e5 att de enkelt kan l\u00e4sa eller dela den. I den h\u00e4r artikeln diskuterade vi hur man kan exportera data fr\u00e5n en databas till Excel- och CSV-filer. Ut\u00f6ver detta kommer vi ocks\u00e5 att studera hur man kan skicka den exporterade filen som en bilaga i e-postmeddelandet.<\/p>\n<h3>Komma ig\u00e5ng<\/h3>\n<p>F\u00f6r att komma ig\u00e5ng m\u00e5ste du f\u00f6rst installera <a href=\"https:\/\/phpspreadsheet.readthedocs.io\/en\/latest\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PhpSpreadsheet-<\/a> biblioteket. Jag rekommenderar att du anv\u00e4nder <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> f\u00f6r installation av biblioteket. \u00d6ppna terminalen i din projektkatalog och k\u00f6r kommandot:<\/p>\n<pre><code>composer require phpoffice\/phpspreadsheet<\/code><\/pre>\n<p>PhpSpreadsheet \u00e4r biblioteket som ger st\u00f6d f\u00f6r l\u00e4sning och skrivning av olika typer av filformat. Nedan visas sk\u00e4rmdumpen av filformat som st\u00f6ds.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20480-6081f88658855.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20480-6081f88658855.png\" alt=\"Hur man exporterar MySQL-databasdata till Excel med PHP\" ><\/a><\/p>\n<p>V\u00e5rt slutm\u00e5l \u00e4r att exportera databastabellposter till Excel \/ CSV-fil. Jag tar tabellen &quot;produkter&quot; som ett exempel. L\u00e5t oss skapa en tabell &quot;produkter&quot; i databasen genom att k\u00f6ra fr\u00e5gan nedan.<\/p>\n<pre><code>CREATE TABLE `products` (\u00a0`id` int(11) NOT NULL AUTO_INCREMENT,\n\u00a0`product_name` varchar(255) NOT NULL,\n\u00a0`product_sku` varchar(255) NOT NULL,\n\u00a0`product_price` varchar(255) NOT NULL,\n\u00a0PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;<\/code><\/pre>\n<p>L\u00e4gg sedan till n\u00e5gra dummyposter i tabellen s\u00e5 att du ser n\u00e5gra poster i den exporterade filen.<\/p>\n<pre><code>INSERT INTO `products` (`id`, `product_name`, `product_sku`, `product_price`) VALUES\n(1, 'Apple', 'app_111', '$1000'),\n(2, 'Lenovo', 'len_222', '$999'),\n(3, 'Samsung', 'sam_689', '$1200'),\n(4, 'Acer', 'ace_620', '$900');<\/code><\/pre>\n<p>Skapa sedan en <code>db.php<\/code>fil d\u00e4r vi skulle skriva databasanslutningen.<\/p>\n<p><strong>db.php<\/strong><\/p>\n<pre><code>&lt;?php\n$db_host = 'DATABASE_HOST';\n$db_username = 'DATABASE_USERNAME';\n$db_password = 'DATABASE_PASSWORD';\n$db_name = 'DATABASE_NAME';\n\u00a0\n$db = new mysqli($db_host, $db_username, $db_password, $db_name);\n\u00a0\nif($db-&gt;connect_error){\n\u00a0\u00a0\u00a0\u00a0die(\"Unable to connect database: \". $db-&gt;connect_error);\n}<\/code><\/pre>\n<p>Se till att ers\u00e4tta platsh\u00e5llarna med de faktiska v\u00e4rdena i ovanst\u00e5ende kod. I n\u00e4sta del av handledningen tilldelar jag ett separat avsnitt om att exportera data till Excel, till CSV och skicka e-postmeddelandet med en exporterad fil som en bilaga.<\/p>\n<h3>Exportera MySQL-databasdata till Excel med PHP<\/h3>\n<p>Du har installerat biblioteket och \u00e4r redo med en databastabell med dummy-poster. Nu kan du forts\u00e4tta och skriva den faktiska koden som exporterar en Excel-fil med data fylld i den.<\/p>\n<p>Skapa en <code>index.php<\/code>fil i rotkatalogen. I den h\u00e4r filen skriver jag en SELECT-fr\u00e5ga f\u00f6r att h\u00e4mta data fr\u00e5n databasen, skriva dessa data till Excel och slutligen ladda ner den automatiskt.<\/p>\n<p><strong>index.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once \"vendor\/autoload.php\";\nrequire_once \"db.php\";\n\u00a0\nuse PhpOfficePhpSpreadsheetSpreadsheet;\nuse PhpOfficePhpSpreadsheetWriterXlsx;\n\u00a0\n$spreadsheet = new Spreadsheet();\n$Excel_writer = new Xlsx($spreadsheet);\n\u00a0\n$spreadsheet-&gt;setActiveSheetIndex(0);\n$activeSheet = $spreadsheet-&gt;getActiveSheet();\n\u00a0\n$activeSheet-&gt;setCellValue('A1', 'Product Name');\n$activeSheet-&gt;setCellValue('B1', 'Product SKU');\n$activeSheet-&gt;setCellValue('C1', 'Product Price');\n\u00a0\n$query = $db-&gt;query(\"SELECT * FROM products ORDER BY id DESC\");\n\u00a0\nif($query-&gt;num_rows &gt; 0) {\n\u00a0\u00a0\u00a0\u00a0$i = 2;\n\u00a0\u00a0\u00a0\u00a0while($row = $query-&gt;fetch_assoc()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$activeSheet-&gt;setCellValue('A'.$i, $row['product_name']);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$activeSheet-&gt;setCellValue('B'.$i, $row['product_sku']);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$activeSheet-&gt;setCellValue('C'.$i, $row['product_price']);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$i++;\n\u00a0\u00a0\u00a0\u00a0}\n}\n\u00a0\n$filename = 'products.xlsx';\n\u00a0\nheader('Content-Type: application\/vnd.ms-excel');\nheader('Content-Disposition: attachment;filename='. $filename);\nheader('Cache-Control: max-age=0');\n$Excel_writer-&gt;save('php:\/\/output');<\/code><\/pre>\n<p>N\u00e4r du k\u00f6r den h\u00e4r PHP-filen i en webbl\u00e4sare kommer en Excel-fil att ladda ner automatiskt och detta Excel-ark kommer att ha f\u00f6ljande utdata.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20480-6081f88658855.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20480-6081f88658855.png\" alt=\"Hur man exporterar MySQL-databasdata till Excel med PHP\" ><\/a><\/p>\n<h3>Exportera MySQL-databasdata till CSV med PHP<\/h3>\n<p>I f\u00f6reg\u00e5ende avsnitt exporterade vi data till Excel-fil. Om n\u00e5gon vill exportera data i en CSV-fil m\u00e5ste du \u00e4ndra n\u00e5gra rader i ovanst\u00e5ende kod.<\/p>\n<p><strong>csv.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once \"vendor\/autoload.php\";\nrequire_once \"db.php\";\n\u00a0\nuse PhpOfficePhpSpreadsheetSpreadsheet;\nuse PhpOfficePhpSpreadsheetWriterCsv;\n\u00a0\n$spreadsheet = new Spreadsheet();\n$Excel_writer = new Csv($spreadsheet);\n\u00a0\n$spreadsheet-&gt;setActiveSheetIndex(0);\n$activeSheet = $spreadsheet-&gt;getActiveSheet();\n\u00a0\n$activeSheet-&gt;setCellValue('A1', 'Product Name');\n$activeSheet-&gt;setCellValue('B1', 'Product SKU');\n$activeSheet-&gt;setCellValue('C1', 'Product Price');\n\u00a0\n$query = $db-&gt;query(\"SELECT * FROM products ORDER BY id DESC\");\n\u00a0\nif($query-&gt;num_rows &gt; 0) {\n\u00a0\u00a0\u00a0\u00a0$i = 2;\n\u00a0\u00a0\u00a0\u00a0while($row = $query-&gt;fetch_assoc()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$activeSheet-&gt;setCellValue('A'.$i, $row['product_name']);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$activeSheet-&gt;setCellValue('B'.$i, $row['product_sku']);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$activeSheet-&gt;setCellValue('C'.$i, $row['product_price']);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$i++;\n\u00a0\u00a0\u00a0\u00a0}\n}\n\u00a0\n$filename = 'products.csv';\n\u00a0\nheader('Content-Type: application\/text-csv');\nheader('Content-Disposition: attachment;filename='. $filename);\nheader('Cache-Control: max-age=0');\n$Excel_writer-&gt;save('php:\/\/output');<\/code><\/pre>\n<h3>Skicka ett e-postmeddelande med filen som en bilaga<\/h3>\n<p>Hittills i den h\u00e4r artikeln har vi sett hur man laddar ner filen i CSV- och Excel-format. Vissa anv\u00e4ndare kanske vill skicka den exporterade filen som en bilaga i e-postmeddelandet. L\u00e5t oss se hur man uppn\u00e5r det.<\/p>\n<p>Installera f\u00f6rst <a href=\"https:\/\/github.com\/PHPMailer\/PHPMailer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPMailer-<\/a> biblioteket med kommandot:<\/p>\n<pre><code>composer require phpmailer\/phpmailer<\/code><\/pre>\n<p>N\u00e4r du har installerat biblioteket kan du anv\u00e4nda vilken SMTP-server som helst f\u00f6r att skicka ett e-postmeddelande. Det \u00e4r upp till dig. Du kan anv\u00e4nda din v\u00e4rdbaserade SMTP-server, AWS SES eller Gmail SMTP-server. Om du g\u00e5r med Gmail SMTP-servern l\u00e4s v\u00e5r artikel <a href=\"https:\/\/themewp.inform.click\/sv\/skicka-e-post-med-gmail-smtp-server-fran-php-skript\/\" title=\"Skicka e-post med Gmail SMTP-server fr\u00e5n PHP-skript\">Skicka e-post med Gmail SMTP-server fr\u00e5n PHP-skript<\/a> som f\u00f6rklarar konfigurationen som beh\u00f6vs f\u00f6r den.<\/p>\n<p>Koden skrivs ned tidigare och laddar ner filen automatiskt. Men nu, ist\u00e4llet f\u00f6r att g\u00f6ra den nedladdningsbar, kommer vi att spara filen i katalogen och sedan skicka den som en bilaga. Kort sagt, vi kommer att ha koden nedan f\u00f6r att spara filen.<\/p>\n<pre><code>...\n$filename = 'products.csv';\n\u00a0\nif (!file_exists('files')) {\n\u00a0\u00a0\u00a0\u00a0mkdir('files', 0755);\n}\n$Excel_writer-&gt;save('files\/'.$filename);<\/code><\/pre>\n<p>V\u00e5r sista kod f\u00f6r att skicka bilagor i ett e-postmeddelande kommer att vara f\u00f6ljande:<\/p>\n<pre><code>&lt;?php\nrequire_once \"vendor\/autoload.php\";\nrequire_once \"db.php\";\n\u00a0\nuse PhpOfficePhpSpreadsheetSpreadsheet;\nuse PhpOfficePhpSpreadsheetWriterCsv;\n\u00a0\n\/\/Import PHPMailer classes into the global namespace\nuse PHPMailerPHPMailerPHPMailer;\nuse PHPMailerPHPMailerException;\n\u00a0\n$spreadsheet = new Spreadsheet();\n$Excel_writer = new Csv($spreadsheet);\n\u00a0\n$spreadsheet-&gt;setActiveSheetIndex(0);\n$activeSheet = $spreadsheet-&gt;getActiveSheet();\n\u00a0\n$activeSheet-&gt;setCellValue('A1', 'Product Name');\n$activeSheet-&gt;setCellValue('B1', 'Product SKU');\n$activeSheet-&gt;setCellValue('C1', 'Product Price');\n\u00a0\n$query = $db-&gt;query(\"SELECT * FROM products ORDER BY id DESC\");\n\u00a0\nif($query-&gt;num_rows &gt; 0) {\n\u00a0\u00a0\u00a0\u00a0$i = 2;\n\u00a0\u00a0\u00a0\u00a0while($row = $query-&gt;fetch_assoc()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$activeSheet-&gt;setCellValue('A'.$i, $row['product_name']);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$activeSheet-&gt;setCellValue('B'.$i, $row['product_sku']);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$activeSheet-&gt;setCellValue('C'.$i, $row['product_price']);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$i++;\n\u00a0\u00a0\u00a0\u00a0}\n}\n\u00a0\n$filename = 'products.csv';\n\u00a0\nif (!file_exists('files')) {\n\u00a0\u00a0\u00a0\u00a0mkdir('files', 0755);\n}\n$Excel_writer-&gt;save('files\/'.$filename);\n\u00a0\n\/\/ send as an attachment\n$mail = new PHPMailer(true);\ntry {\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;isSMTP();\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;Host = 'SMTP_HOST';\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;SMTPAuth = true;\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;Username = 'SMTP_USERNAME';\u00a0\u00a0 \/\/username\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;Password = 'SMTP_PASSWORD';\u00a0\u00a0 \/\/password\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;SMTPSecure = 'ssl';\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;Port = 465;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;setFrom('FROM_EMAIL_ADDRESS', 'FROM_NAME');\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;addAddress('RECEPIENT_EMAIL_ADDRESS', 'RECEPIENT_NAME');\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;addAttachment('files\/'.$filename);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;isHTML(true);\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;Subject = 'Our Exported File';\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;Body\u00a0\u00a0\u00a0 = 'Our Exported File';\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;send();\n\u00a0\u00a0\u00a0\u00a0echo 'Message has been sent';\n} catch (Exception $e) {\n\u00a0\u00a0\u00a0\u00a0echo 'Message could not be sent. Mailer Error: '. $mail-&gt;ErrorInfo;\n}<\/code><\/pre>\n<p>Ers\u00e4tt platsh\u00e5llarna med de faktiska v\u00e4rdena och e-postmeddelandet skickas med en bilaga till mottagarens e-postadress.<\/p>\n<p>Jag hoppas att du f\u00f6rst\u00e5r hur du exporterar MySQL-databasposter till Excel- eller CSV-filen och \u00e4ven skickar den som en bilaga. Dela dina tankar och f\u00f6rslag i kommentarsektionen nedan.<\/p>\n<h4>relaterade artiklar<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/hur-man-overfor-filer-till-fjarrserver-i-php\/\" title=\"Hur man \u00f6verf\u00f6r filer till fj\u00e4rrserver i PHP\">Hur man \u00f6verf\u00f6r filer till fj\u00e4rrserver i PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/skicka-e-post-med-mailjet-alternativ-till-gmail-smtp-server-i-php\/\" title=\"Skicka e-post med Mailjet (alternativ till Gmail SMTP-server) i PHP\">Skicka e-post med Mailjet (alternativ till Gmail SMTP-server) i PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/hur-man-konverterar-html-till-pdf-i-php\/\" title=\"Hur man konverterar HTML till PDF i PHP\">Hur man konverterar HTML till PDF i PHP<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vill du exportera MySQL-databasdata till Excel med PHP? I den h\u00e4r artikeln visar vi dig hur man enkelt kan exportera data till excel-fil med mimumum-kod<\/p>\n","protected":false},"author":1,"featured_media":21909,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[279],"tags":[850],"class_list":["post-28580","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-10","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/28580","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/comments?post=28580"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/28580\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media\/21909"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media?parent=28580"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/categories?post=28580"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/tags?post=28580"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}