Using the Embedding API, you can export or download the views in various formats, including PDF, PowerPoint, crosstab (CSV), Excel, image (PNG). You can also export the summary data. The Embedding API provides support for programmatically exporting the embedded view in all formats, without user interaction. You can also use the Embedding API to open the export or download dialog boxes where users can select the views to download and other options.
In this section
You can call the Viz.displayDialogAsync()
method to open various dialog boxes for exporting or downloading the current view. The method has one parameter, the TableauDialogType
, which specifies what type of dialog box to display. Use this method if you want to allow users to select additional options using the dialog box for a specific type of export or download. The options are described in the following table.
TableauDialogType |
Description |
---|---|
TableauDialogType.ExportPDF |
Opens the Download PDF dialog box |
TableauDialogType.ExportCrossTab |
Opens the Download Crosstab dialog box. You can choose Excel or CSV as the format. |
TableauDialogType.ExportPowerPoint |
Opens the Download PowerPoint dialog box. You can choose to download the view or specific sheets in the dashboard or the workbook |
TableauDialogType.ExportData |
Opens the View Data window where you can view or download the summary or full data. |
TableauDialogType.ExportWorkbook |
Opens the Download Tableau Workbook dialog box. You can choose the version of the Tableau workbook to download. |
TableauDialogType.Share |
Opens the Share dialog box. |
To use the Viz.displayDialogAsync()
method, you first get the TableauViz
object and then call the method specifying the TableauDialogType
. For example, you could open the Download PDF dialog box using the following sample code.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Simple Export</title>
<script type="module">
import { TableauViz, TableauEventType, TableauDialogType } from "https://public.tableau.com/javascripts/api/tableau.embedding.3.latest.min.js"
const tableauViz = document.querySelector('tableau-viz');
tableauViz.addEventListener(TableauEventType.FirstInteractive, (e) => {
document.getElementById('export-pdf').onclick = async () => {
await tableauViz.displayDialogAsync(TableauDialogType.ExportPDF);
};
});
</script>
</head>
<body>
<button type="button" id="export-pdf">Export to PDF</button>
<div>
<tableau-viz id="tableauViz"
src='https://public.tableau.com/views/Superstore_embedded_800x800/Overview'
toolbar="bottom" hide-tabs>
<viz-filter field="Category" value="Technology"> </viz-filter>
<viz-filter field="State" value="California,Oregon,Washington"> </viz-filter>
</tableau-viz>
</div>
</body>
</html>
Here is what the example looks like when you use it in a web page.
If you want to programmatically export or download a view, without user interaction, you can use one of the exporting methods to export from the view in crosstab (Excel or CSV), PDF, or PowerPoint formats, or as an image file (.PNG
). You can also programmatically download the summary or full data that appears in the View Data window.
You can use the exportImageAsync()
method to export an image of the currently active view. To download the image, you just need access to the TablaeuViz
object. The method has no parameters and downloads the image as a .PNG
file. The file takes the name of the active view and is placed in the user’s default download directory.
The following example shows how you could embed a viz in a web page and enable users to download the image when they click a button on the page.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Export Image</title>
<script type="module">
import { TableauViz, TableauEventType } from "https://public.tableau.com/javascripts/api/tableau.embedding.3.latest.min.js"
<head>
<script>
const tableauViz = document.querySelector('tableau-viz');
tableauViz.addEventListener(TableauEventType.FirstInteractive, (e) => {
document.getElementById('export-image').onclick = async () => {
await tableauViz.exportImageAsync();
};
});
</script>
</head>
<body>
<div>
<tableau-viz id="tableauViz"
src='https://public.tableau.com/views/Superstore_embedded_800x800/Overview'>
</tableau-viz>
<button type="button" id="export-image">Export Image</button>
</div>
</body>
</html>
Use the Viz.exportCrosstabAsync()
method to programmatically export a crosstab (pivot table) from the specified worksheet in the view, in either CSV or Excel format. The method has two parameters, the name of the selected worksheet and the file format to use.
Format | Description |
---|---|
CrosstabFileFormat.Excel |
Exports crosstab from the selected worksheet in Excel format (.xlsx ) |
CrosstabFileFormat.CSV |
Exports crosstab from the selected worksheet in CSV format (.csv ) |
The following example shows how you could export a crosstab from a worksheet as an Excel file using the Viz.exportCrosstabAsync()
method. Be sure to import CrosstabFileFormat
from the Embedding API library so that you can set the file format. The example exports the crosstab in Excel format from the first worksheet in the array of worksheets in the dashboard.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Crosstab Export</title>
<script type="module">
import { TableauViz, TableauEventType, CrosstabFileFormat } from "https://public.tableau.com/javascripts/api/tableau.embedding.3.latest.min.js"
const tableauViz = document.querySelector('tableau-viz');
tableauViz.addEventListener(TableauEventType.FirstInteractive, (e) => {
document.getElementById('export-crosstab').onclick = async () => {
const activeSheet = tableauViz.workbook.activeSheet;
const worksheets = activeSheet.worksheets;
const selectedWorksheetForExport = worksheets[1];
const crosstabFileFormat = CrosstabFileFormat.Excel;
tableauViz.exportCrosstabAsync(selectedWorksheetForExport.name, crosstabFileFormat).then(() => {
console.log(`${selectedWorksheetForExport.name}: ${crosstabFileFormat}`);
});
};
});
</script>
<body>
<div>
<tableau-viz id="tableauViz"
src='https://public.tableau.com/views/Superstore_embedded_800x800/Overview'></tableau-viz>
<button id="export-crosstab">Export Crosstab</button>
</div>
</body>
</html>
Use the Viz.exportPDFAsync()
method to programmatically export a PDF of the specified worksheet(s) in the view. The method has two parameters, the names of worksheets to export and the exportPDFOptions
. The PDF options include page size, scaling, and orientation.
When you specify the names of the worksheet(s) to export in the PDF file, the method follows the same logic as the Download PDF dialog box. You can either choose specific sheets in the dashboard, or choose from the published sheets in the workbook. You can’t mix the two. If no worksheets are specified, the currently active sheet is exported.
Be sure to import PrintScaling
, PrintPageSize
, PrintOrientation
from the Embedding API library so that you can set the PDF options (ExportPDFOptions
). These enumerations provide the same options that are available in the Download PDF dialog box. Note that if you set the ExportPDFOptions
, you need to provide values for all of the options (scaling, page size, and orientation), as the method will throw an error if one is missing. If you want to use the default values, omit the ExportPDFOptions
argument when you call the method.
ExportPDFOptions |
Values | Description |
---|---|---|
scaling |
PrintScaling.Automatic , PrintScaling.Perc25 , PrintScaling.Perc50 , PrintScaling.Perc60 , PrintScaling.Perc75 , PrintScaling.Perc80 , PrintScaling.Perc90 , PrintScaling.Perc100 , PrintScaling.Perc200 , PrintScaling.Perc400 , PrintScaling.AtMost1PageHigh , PrintScaling.AtMost2PagesHigh ,PrintScaling.AtMost1PageWide , PrintScaling.AtMost2PagesWide |
Shrinks or enlarges the size of the view in the PDF file. If ExportPDFOptions is not specified, PrintScaling.Automatic is the default. |
pageSize |
PrintPageSize.A3 , PrintPageSize.A4 , PrintPageSize.A5 , PrintPageSize.B4 , PrintPageSize.B5 , PrintPageSize.Executive , PrintPageSize.Folio ,PrintPageSize.Ledger , PrintPageSize.Legal , PrintPageSize.Letter , PrintPageSize.Note , PrintPageSize.Quarto , PrintPageSize.Statement ,PrintPageSize.Tabloid , PrintPageSize.Unspecified |
Sets the size of the PDF pages. If ExportPDFOptions is not specified, the default is PrintPageSize.Letter . |
orientation |
PrintOrientation.Landscape , PrintOrientation.Portrait |
Sets the page orientation. If ExportPDFOptions is not specified, the default is PrintOrientation.Portrait . |
The following example shows how you could use the Viz.exportPDFAsync()
method. The example downloads a PDF that contains all of the published views in a workbook. The example creates an array of the names of worksheets to export, using the publishedSheetsInfo
property to return the list of worksheets in the workbook.
The example also shows how you can create the exportPDFOptions
object that contains the PDF options for exporting. Note that you need to provide values for all the options (scaling, page size, and orientation). Omitting an option will cause an error.
const exportPDFOptions = {
scaling: PrintScaling.Automatic,
pageSize: PrintPageSize.Letter,
orientation: PrintOrientation.Portrait,
};
And then pass those options along with the array of worksheets to export in the call to the tableauViz.exportPDFAsync()
method.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>PDF Export</title>
<script type="module">
import { TableauViz, TableauEventType, PrintScaling, PrintPageSize, PrintOrientation } from "https://public.tableau.com/javascripts/api/tableau.embedding.3.latest.min.js"
const tableauViz = document.querySelector('tableau-viz');
tableauViz.addEventListener(TableauEventType.FirstInteractive, (e) => {
document.getElementById('export-pdf').onclick = async () => {
const publishedSheetsInfo = tableauViz.workbook.publishedSheetsInfo;
const selectedWorkbookSheetsForExport = Array.from(publishedSheetsInfo, (publishedSheetInfo) => publishedSheetInfo.name);
const exportPDFOptions = {
scaling: PrintScaling.Automatic,
pageSize: PrintPageSize.Letter,
orientation: PrintOrientation.Portrait,
};
tableauViz.exportPDFAsync(selectedWorkbookSheetsForExport, exportPDFOptions).then(() => {
console.log(`Workbook: ${selectedWorkbookSheetsForExport.toString()}`);
console.log('Options:', exportPDFOptions);
});
};
});
</script>
<body>
<div>
<tableau-viz id="tableauViz"
src='https://public.tableau.com/views/Superstore_embedded_800x800/Overview'></tableau-viz>
<button id="export-pdf">Export PDF</button>
</div>
</body>
</html>
Use the Viz.exportPowerPointAsync()
method to programmatically export the specified sheet(s) to a PowerPoint file. If no sheets are specified, the currently active sheet is exported. The method has one parameter, the names of worksheets to export. The order the worksheets appear in the list is the order they appear in the PowerPoint file.
Note that the list must either contain specific sheets from the dashboard, or contain specific sheets from the workbook. You can’t mix the two. The Viz.exportPowerPointAsync()
method functions the same way the Download PowerPoint dialog box does, and the list of sheets correspond to the choices in the dialog box drop-down menu.
The following example shows one way you could use the Viz.exportPowerPointAsync()
method on a web page. The example downloads a PowerPoint file of all the sheets in the dashboard. If you wanted to download a PowerPoint of all the published sheets in the workbook, you could use the workbook.publishedSheetsInfo
property to create a list of sheets and pass that to the Viz.exportPowerPointAsync()
method.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>PowerPoint Export</title>
<script type="module">
import { TableauViz, TableauEventType } from "https://public.tableau.com/javascripts/api/tableau.embedding.3.latest.min.js"
const tableauViz = document.querySelector('tableau-viz');
tableauViz.addEventListener(TableauEventType.FirstInteractive, (e) => {
console.log("The Viz is now interactive");
})
</script>
<script>
async function exportPPTAsync() {
const activeSheet = tableauViz.workbook.activeSheet;
const worksheets = activeSheet.worksheets;
const selectedWorksheetsForExport = Array.from(worksheets, (worksheet) => worksheet.name);
console.log('Export PowerPoint:');
try {
await tableauViz.exportPowerPointAsync(selectedWorksheetsForExport).then(() => {
console.log(`Worksheets: ${selectedWorksheetsForExport.toString()}`);
});
} catch (e) {
console.error(e);
};
};
</script>
</head>
<body>
<div id="main">
<tableau-viz id="tableauViz" src='https://public.tableau.com/views/Superstore_embedded_800x800/Overview'></tableau-viz>
<button id="export-powerpoint" onclick="exportPPTAsync()">Export PowerPoint</button>
</div>
</body>
</html>
Use the Viz.exportDataAsync()
method to programmatically download summary data from the specified sheet within the current view. The data is downloaded in a CSV file. The method has two parameters, the name of the worksheet and the optional ExportDataOptions
. You can use the ExportDataOptions
to filter the data by column ID, so that you can download only the data you are interested in.
ExportDataOptions |
Description |
---|---|
columnsToInclude |
Specifies the column IDs of the columns you want to include in the CSV file. The order of the array IDs determines the order of columns in the summary data table. |
ignoreAliases |
Ignores aliases in data source. The default is FALSE. |
The following example shows how you might download the summary data from a worksheet. The example uses the first worksheet from the array of worksheets in a dashboard. This example selects all the columns of summary data to include in the download.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Data Export</title>
<script type="module">
import {
TableauViz,
TableauEventType,
} from "https://public.tableau.com/javascripts/api/tableau.embedding.3.latest.min.js";
const tableauViz = document.querySelector("tableau-viz");
tableauViz.addEventListener(TableauEventType.FirstInteractive, (e) => {
console.log("The viz is interactive");
});
document.getElementById("export-data").onclick = exportData;
async function exportData() {
// get the currently active sheet (dashboard in this case)
const activeSheet = tableauViz.workbook.activeSheet;
const worksheets = activeSheet.worksheets;
// use the first worksheet
const selectedWorksheetForExport = worksheets[0];
// include all columns in the summary data
const columns =
await selectedWorksheetForExport.getSummaryColumnsInfoAsync();
const columnsToInclude = Array.from(
columns,
(column) => column.fieldId
);
const ignoreAliases = false;
const exportDataOptions = { ignoreAliases, columnsToInclude };
console.log("Export Data:");
try {
await tableauViz
.exportDataAsync(selectedWorksheetForExport.name, exportDataOptions)
.then(() => {
console.log(
`${selectedWorksheetForExport.name}:`,
exportDataOptions
);
});
} catch {
console.error(e);
}
}
</script>
</head>
<body>
<div id="main">
<tableau-viz id="tableauViz" src="https://public.tableau.com/views/Superstore_embedded_800x800/Overview"></tableau-viz>
<button id="export-data">Export Data</button>
</div>
</body>
</html>