en-US/ExcelFast-Help.xml

<?xml version="1.0" encoding="utf-8"?>
<helpItems xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" schema="maml" xmlns="http://msh">
  <command:command>
    <command:details>
      <command:name>Export-Workbook</command:name>
      <maml:description>
        <maml:para>Exports PowerShell objects to an Excel workbook.</maml:para>
      </maml:description>
      <command:verb>Export</command:verb>
      <command:noun>Workbook</command:noun>
    </command:details>
    <maml:description>
      <maml:para>The Export-Workbook cmdlet exports PowerShell objects to an Excel workbook. Objects are converted to rows in the Excel file, with object properties becoming column headers. The cmdlet supports exporting to a single sheet or multiple sheets. If the destination file exists and -Force is not specified, an error will be raised.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Export-Workbook</maml:name>
        <command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="0" aliases="none">
          <maml:name>Destination</maml:name>
          <maml:description>
            <maml:para>Specifies the file path where the Excel workbook will be created. If the file already exists, use -Force to overwrite it.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="true">String</command:parameterValue>
        </command:parameter>
        <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
          <maml:name>Force</maml:name>
          <maml:description>
            <maml:para>Overwrites the destination file if it already exists, and creates necessary directory paths.</maml:para>
          </maml:description>
          <command:parameterValue required="false" variableLength="true">SwitchParameter</command:parameterValue>
        </command:parameter>
        <command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="1" aliases="none">
          <maml:name>InputObject</maml:name>
          <maml:description>
            <maml:para>Specifies the PowerShell objects to export to the Excel file. Object properties are exported as column headers, and each object becomes a row.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="true">PSObject[]</command:parameterValue>
        </command:parameter>
        <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
          <maml:name>SheetName</maml:name>
          <maml:description>
            <maml:para>Specifies the name of the sheet in the Excel workbook. If not specified, uses 'Sheet1'.</maml:para>
          </maml:description>
          <command:parameterValue required="false" variableLength="true">String</command:parameterValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="0" aliases="none">
        <maml:name>Destination</maml:name>
        <maml:description>
          <maml:para>Specifies the file path where the Excel workbook will be created. If the file already exists, use -Force to overwrite it.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="true">String</command:parameterValue>
      </command:parameter>
      <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
        <maml:name>Force</maml:name>
        <maml:description>
          <maml:para>Overwrites the destination file if it already exists, and creates necessary directory paths.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="true">SwitchParameter</command:parameterValue>
      </command:parameter>
      <command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="1" aliases="none">
        <maml:name>InputObject</maml:name>
        <maml:description>
          <maml:para>Specifies the PowerShell objects to export to the Excel file. Object properties are exported as column headers, and each object becomes a row.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="true">PSObject[]</command:parameterValue>
      </command:parameter>
      <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
        <maml:name>SheetName</maml:name>
        <maml:description>
          <maml:para>Specifies the name of the sheet in the Excel workbook. If not specified, uses 'Sheet1'.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="true">String</command:parameterValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <dev:name>String</dev:name>
        </dev:type>
        <maml:description>
          <maml:para>You can pipe file paths as the -Destination parameter.</maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <dev:name>PSObject</dev:name>
        </dev:type>
        <maml:description>
          <maml:para>You can pipe PowerShell objects to be exported to the -InputObject parameter.</maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para>- Supported file formats: .xlsx and .csv
- Object properties become Excel column headers
- Each object becomes a row in the Excel sheet
- If no objects are provided, a warning message is displayed
- Use -Force to overwrite existing files or create directory paths
- When exporting multiple object arrays, each array is placed in a separate sheet
- Use -Verbose to see detailed export information</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>--------- Example 1: Export objects to Excel ---------</maml:title>
        <maml:introduction>
          <maml:para>```powershell
$data = @(
    @{ Name = 'Item1'; Value = 100 },
    @{ Name = 'Item2'; Value = 200 }
)
Export-Workbook -Destination 'C:\Data\Export.xlsx' -InputObject $data
```</maml:para>
          <maml:para>&#x80;</maml:para>
          <maml:para>Exports an array of custom objects to a new Excel file.</maml:para>
        </maml:introduction>
        <dev:code />
        <dev:remarks />
      </command:example>
      <command:example>
        <maml:title>--------- Example 2: Export pipeline data ---------</maml:title>
        <maml:introduction>
          <maml:para>```powershell
Get-Process | Select-Object Name, CPU, Memory | Export-Workbook -Destination 'C:\Data\Processes.xlsx' -Force
```</maml:para>
          <maml:para>&#x80;</maml:para>
          <maml:para>Exports process data from Get-Process to an Excel file, using -Force to overwrite if the file exists.</maml:para>
        </maml:introduction>
        <dev:code />
        <dev:remarks />
      </command:example>
      <command:example>
        <maml:title>--------- Example 3: Export to specific sheet ---------</maml:title>
        <maml:introduction>
          <maml:para>```powershell
$users = @(
    @{ Username = 'user1'; Email = 'user1@example.com' },
    @{ Username = 'user2'; Email = 'user2@example.com' }
)
Export-Workbook -Destination 'C:\Data\Users.xlsx' -InputObject $users -SheetName 'Users'
```</maml:para>
          <maml:para>&#x80;</maml:para>
          <maml:para>Exports data to a named sheet instead of the default 'Sheet1'.</maml:para>
        </maml:introduction>
        <dev:code />
        <dev:remarks />
      </command:example>
      <command:example>
        <maml:title>--------- Example 4: Export multiple data sets ---------</maml:title>
        <maml:introduction>
          <maml:para>```powershell
$sales = Get-Content -Path 'C:\Data\sales.json' | ConvertFrom-Json
$users = Import-Csv -Path 'C:\Data\users.csv'
Export-Workbook -Destination 'C:\Data\Report.xlsx' -InputObject @($sales, $users)
```</maml:para>
          <maml:para>&#x80;</maml:para>
          <maml:para>Exports multiple data sets to separate sheets in the workbook.</maml:para>
        </maml:introduction>
        <dev:code />
        <dev:remarks />
      </command:example>
      <command:example>
        <maml:title>--------- Example 5: Export cmdlet output ---------</maml:title>
        <maml:introduction>
          <maml:para>```powershell
Get-ChildItem -Path 'C:\Data' -File | Export-Workbook -Destination 'C:\Data\FileList.xlsx' -Force
```</maml:para>
          <maml:para>&#x80;</maml:para>
          <maml:para>Exports file system objects to Excel with metadata.</maml:para>
        </maml:introduction>
        <dev:code />
        <dev:remarks />
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Version</maml:linkText>
        <command:uri />
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Get-Workbook</maml:linkText>
        <command:uri>Get-Workbook.md</command:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Import-Workbook</maml:linkText>
        <command:uri>Import-Workbook.md</command:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Save-Workbook</maml:linkText>
        <command:uri>Save-Workbook.md</command:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command>
    <command:details>
      <command:name>Get-Workbook</command:name>
      <maml:description>
        <maml:para>Opens an Excel workbook for manipulation and analysis.</maml:para>
      </maml:description>
      <command:verb>Get</command:verb>
      <command:noun>Workbook</command:noun>
    </command:details>
    <maml:description>
      <maml:para>The Get-Workbook cmdlet opens an Excel workbook file and returns an XLWorkbook object that can be used with other ExcelFast commands. It supports local file paths, as well as remote URLs for files stored online.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-Workbook</maml:name>
        <command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="0" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies the path to the Excel file to open. Accepts local file paths or remote URLs. Supports multiple files for batch processing.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="true">String[]</command:parameterValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="0" aliases="none">
        <maml:name>Path</maml:name>
        <maml:description>
          <maml:para>Specifies the path to the Excel file to open. Accepts local file paths or remote URLs. Supports multiple files for batch processing.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="true">String[]</command:parameterValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <dev:name>String</dev:name>
        </dev:type>
        <maml:description>
          <maml:para>You can pipe one or more file paths as strings to this cmdlet.</maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <dev:name>String</dev:name>
        </dev:type>
        <maml:description>
          <maml:para>You can pipe an array of file paths to this cmdlet.</maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <dev:name>XLWorkbook</dev:name>
        </dev:type>
        <maml:description>
          <maml:para>The cmdlet returns one or more XLWorkbook objects representing the opened Excel files.</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para>- If the workbook is open in Excel or locked by another process, an error will be returned.
- The workbook must be a valid Excel file (.xlsx or .csv format).
- Remote files are downloaded to a temporary location and opened from there.</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>--------- Example 1: Open a local Excel file ---------</maml:title>
        <maml:introduction>
          <maml:para>Get-Workbook -Path 'C:\Data\Spreadsheet.xlsx'</maml:para>
          <maml:para>&#x80;</maml:para>
          <maml:para>Opens the Excel file at the specified path and returns the workbook object.</maml:para>
        </maml:introduction>
        <dev:code />
        <dev:remarks />
      </command:example>
      <command:example>
        <maml:title>--------- Example 2: Open multiple Excel files ---------</maml:title>
        <maml:introduction>
          <maml:para>Get-Workbook -Path 'C:\Data\File1.xlsx', 'C:\Data\File2.xlsx'</maml:para>
          <maml:para>&#x80;</maml:para>
          <maml:para>Opens multiple Excel files and returns an array of workbook objects.</maml:para>
        </maml:introduction>
        <dev:code />
        <dev:remarks />
      </command:example>
      <command:example>
        <maml:title>--------- Example 3: Use pipeline input with alias ---------</maml:title>
        <maml:introduction>
          <maml:para>```powershell
'C:\Data\Spreadsheet.xlsx' | gwb
```</maml:para>
          <maml:para>&#x80;</maml:para>
          <maml:para>Uses the short alias `gwb` and passes the file path through the pipeline.</maml:para>
        </maml:introduction>
        <dev:code />
        <dev:remarks />
      </command:example>
      <command:example>
        <maml:title>--------- Example 4: Open workbook and access worksheet ---------</maml:title>
        <maml:introduction>
          <maml:para>```powershell
$workbook = Get-Workbook -Path 'C:\Data\Spreadsheet.xlsx'
$worksheet = $workbook.Worksheets | Where-Object Name -eq 'Sheet1'
```</maml:para>
          <maml:para>&#x80;</maml:para>
          <maml:para>Opens a workbook and accesses a specific worksheet by name.</maml:para>
        </maml:introduction>
        <dev:code />
        <dev:remarks />
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Version</maml:linkText>
        <command:uri />
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Import-Workbook</maml:linkText>
        <command:uri>Import-Workbook.md</command:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Save-Workbook</maml:linkText>
        <command:uri>Save-Workbook.md</command:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Export-Workbook</maml:linkText>
        <command:uri>Export-Workbook.md</command:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command>
    <command:details>
      <command:name>Import-Workbook</command:name>
      <maml:description>
        <maml:para>Imports data from an Excel workbook, worksheet, or range into PowerShell objects.</maml:para>
      </maml:description>
      <command:verb>Import</command:verb>
      <command:noun>Workbook</command:noun>
    </command:details>
    <maml:description>
      <maml:para>The Import-Workbook cmdlet imports data from Excel files, workbooks, worksheets, or ranges and converts them into PowerShell objects. It supports three input modes: file paths, XLWorkbook objects, or XLRangeBase objects (from worksheets or tables). By default, the first row is treated as column headers to create object properties. Use -NoHeaders to treat all rows as data.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Import-Workbook</maml:name>
        <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
          <maml:name>EndCell</maml:name>
          <maml:description>
            <maml:para>Specifies the ending cell for data import (e.g., 'D10'). This is only used in conjunction with -StartCell or when -NoHeaders is set to true.
Specify the ending cell for data import (e.g., 'A1', 'B2'). This is only used when NoHeaders is set to true.</maml:para>
          </maml:description>
          <command:parameterValue required="false" variableLength="true">String</command:parameterValue>
        </command:parameter>
        <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
          <maml:name>IncludeEmptyRows</maml:name>
          <maml:description>
            <maml:para>Includes empty rows in the output. By default, empty rows are skipped.
Include empty rows in the output. By default, empty rows are skipped.</maml:para>
          </maml:description>
          <command:parameterValue required="false" variableLength="true">SwitchParameter</command:parameterValue>
        </command:parameter>
        <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
          <maml:name>NoHeaders</maml:name>
          <maml:description>
            <maml:para>Specifies that the first row should not be used as column headers. All rows will be treated as data.
Do not use the first row as column headers.</maml:para>
          </maml:description>
          <command:parameterValue required="false" variableLength="true">SwitchParameter</command:parameterValue>
        </command:parameter>
        <command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="0" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies the path to the Excel file to import. Can accept multiple file paths for batch import.
Path to the Excel file to import.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="true">String[]</command:parameterValue>
        </command:parameter>
        <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
          <maml:name>Raw</maml:name>
          <maml:description>
            <maml:para>Returns the result as a raw dynamic enumerable without PSObject wrapping. Use only for advanced performance use cases.
Return the result as a raw dynamic enumerable without PSObject wrapping. Use only for advanced performance use cases.</maml:para>
          </maml:description>
          <command:parameterValue required="false" variableLength="true">SwitchParameter</command:parameterValue>
        </command:parameter>
        <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="1" aliases="none">
          <maml:name>SheetName</maml:name>
          <maml:description>
            <maml:para>Specifies the name(s) of the sheet(s) to import. If not specified, imports from the first sheet.
Names of sheet(s) to import. If not specified, imports the first sheet.</maml:para>
          </maml:description>
          <command:parameterValue required="false" variableLength="true">String[]</command:parameterValue>
        </command:parameter>
        <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
          <maml:name>StartCell</maml:name>
          <maml:description>
            <maml:para>Specifies the starting cell for data import (e.g., 'A1', 'B2'). Useful when data doesn't start at A1.
Specify the starting cell for data import (e.g., 'A1', 'B2').</maml:para>
          </maml:description>
          <command:parameterValue required="false" variableLength="true">String</command:parameterValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Import-Workbook</maml:name>
        <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
          <maml:name>EndCell</maml:name>
          <maml:description>
            <maml:para>Specifies the ending cell for data import (e.g., 'D10'). This is only used in conjunction with -StartCell or when -NoHeaders is set to true.
Specify the ending cell for data import (e.g., 'A1', 'B2'). This is only used when NoHeaders is set to true.</maml:para>
          </maml:description>
          <command:parameterValue required="false" variableLength="true">String</command:parameterValue>
        </command:parameter>
        <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
          <maml:name>IncludeEmptyRows</maml:name>
          <maml:description>
            <maml:para>Includes empty rows in the output. By default, empty rows are skipped.
Include empty rows in the output. By default, empty rows are skipped.</maml:para>
          </maml:description>
          <command:parameterValue required="false" variableLength="true">SwitchParameter</command:parameterValue>
        </command:parameter>
        <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
          <maml:name>NoHeaders</maml:name>
          <maml:description>
            <maml:para>Specifies that the first row should not be used as column headers. All rows will be treated as data.
Do not use the first row as column headers.</maml:para>
          </maml:description>
          <command:parameterValue required="false" variableLength="true">SwitchParameter</command:parameterValue>
        </command:parameter>
        <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
          <maml:name>Raw</maml:name>
          <maml:description>
            <maml:para>Returns the result as a raw dynamic enumerable without PSObject wrapping. Use only for advanced performance use cases.
Return the result as a raw dynamic enumerable without PSObject wrapping. Use only for advanced performance use cases.</maml:para>
          </maml:description>
          <command:parameterValue required="false" variableLength="true">SwitchParameter</command:parameterValue>
        </command:parameter>
        <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="1" aliases="none">
          <maml:name>SheetName</maml:name>
          <maml:description>
            <maml:para>Specifies the name(s) of the sheet(s) to import. If not specified, imports from the first sheet.
Names of sheet(s) to import. If not specified, imports the first sheet.</maml:para>
          </maml:description>
          <command:parameterValue required="false" variableLength="true">String[]</command:parameterValue>
        </command:parameter>
        <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
          <maml:name>StartCell</maml:name>
          <maml:description>
            <maml:para>Specifies the starting cell for data import (e.g., 'A1', 'B2'). Useful when data doesn't start at A1.
Specify the starting cell for data import (e.g., 'A1', 'B2').</maml:para>
          </maml:description>
          <command:parameterValue required="false" variableLength="true">String</command:parameterValue>
        </command:parameter>
        <command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="0" aliases="none">
          <maml:name>Workbook</maml:name>
          <maml:description>
            <maml:para>Specifies the XLWorkbook object to import from. Get this from Get-Workbook.
Workbook object to import. Get using Get-Workbook.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="true">IXLWorkbook</command:parameterValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Import-Workbook</maml:name>
        <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
          <maml:name>EndCell</maml:name>
          <maml:description>
            <maml:para>Specifies the ending cell for data import (e.g., 'D10'). This is only used in conjunction with -StartCell or when -NoHeaders is set to true.
Specify the ending cell for data import (e.g., 'A1', 'B2'). This is only used when NoHeaders is set to true.</maml:para>
          </maml:description>
          <command:parameterValue required="false" variableLength="true">String</command:parameterValue>
        </command:parameter>
        <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
          <maml:name>IncludeEmptyRows</maml:name>
          <maml:description>
            <maml:para>Includes empty rows in the output. By default, empty rows are skipped.
Include empty rows in the output. By default, empty rows are skipped.</maml:para>
          </maml:description>
          <command:parameterValue required="false" variableLength="true">SwitchParameter</command:parameterValue>
        </command:parameter>
        <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
          <maml:name>NoHeaders</maml:name>
          <maml:description>
            <maml:para>Specifies that the first row should not be used as column headers. All rows will be treated as data.
Do not use the first row as column headers.</maml:para>
          </maml:description>
          <command:parameterValue required="false" variableLength="true">SwitchParameter</command:parameterValue>
        </command:parameter>
        <command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="0" aliases="none">
          <maml:name>Range</maml:name>
          <maml:description>
            <maml:para>Specifies a range object to import. Accepts worksheet ranges, table ranges, or workbook ranges obtained from Get-Workbook.
Range to import. Accepts Table Ranges, Worksheet Ranges, or Workbook Ranges. Get using Get-Workbook, select the appropriate Worksheet, and then select the appropriate Range from the Ranges property.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="true">IXLRangeBase</command:parameterValue>
        </command:parameter>
        <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
          <maml:name>Raw</maml:name>
          <maml:description>
            <maml:para>Returns the result as a raw dynamic enumerable without PSObject wrapping. Use only for advanced performance use cases.
Return the result as a raw dynamic enumerable without PSObject wrapping. Use only for advanced performance use cases.</maml:para>
          </maml:description>
          <command:parameterValue required="false" variableLength="true">SwitchParameter</command:parameterValue>
        </command:parameter>
        <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="1" aliases="none">
          <maml:name>SheetName</maml:name>
          <maml:description>
            <maml:para>Specifies the name(s) of the sheet(s) to import. If not specified, imports from the first sheet.
Names of sheet(s) to import. If not specified, imports the first sheet.</maml:para>
          </maml:description>
          <command:parameterValue required="false" variableLength="true">String[]</command:parameterValue>
        </command:parameter>
        <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
          <maml:name>StartCell</maml:name>
          <maml:description>
            <maml:para>Specifies the starting cell for data import (e.g., 'A1', 'B2'). Useful when data doesn't start at A1.
Specify the starting cell for data import (e.g., 'A1', 'B2').</maml:para>
          </maml:description>
          <command:parameterValue required="false" variableLength="true">String</command:parameterValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
        <maml:name>EndCell</maml:name>
        <maml:description>
          <maml:para>Specifies the ending cell for data import (e.g., 'D10'). This is only used in conjunction with -StartCell or when -NoHeaders is set to true.
Specify the ending cell for data import (e.g., 'A1', 'B2'). This is only used when NoHeaders is set to true.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="true">String</command:parameterValue>
      </command:parameter>
      <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
        <maml:name>IncludeEmptyRows</maml:name>
        <maml:description>
          <maml:para>Includes empty rows in the output. By default, empty rows are skipped.
Include empty rows in the output. By default, empty rows are skipped.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="true">SwitchParameter</command:parameterValue>
      </command:parameter>
      <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
        <maml:name>NoHeaders</maml:name>
        <maml:description>
          <maml:para>Specifies that the first row should not be used as column headers. All rows will be treated as data.
Do not use the first row as column headers.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="true">SwitchParameter</command:parameterValue>
      </command:parameter>
      <command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="0" aliases="none">
        <maml:name>Path</maml:name>
        <maml:description>
          <maml:para>Specifies the path to the Excel file to import. Can accept multiple file paths for batch import.
Path to the Excel file to import.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="true">String[]</command:parameterValue>
      </command:parameter>
      <command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="0" aliases="none">
        <maml:name>Range</maml:name>
        <maml:description>
          <maml:para>Specifies a range object to import. Accepts worksheet ranges, table ranges, or workbook ranges obtained from Get-Workbook.
Range to import. Accepts Table Ranges, Worksheet Ranges, or Workbook Ranges. Get using Get-Workbook, select the appropriate Worksheet, and then select the appropriate Range from the Ranges property.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="true">IXLRangeBase</command:parameterValue>
      </command:parameter>
      <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
        <maml:name>Raw</maml:name>
        <maml:description>
          <maml:para>Returns the result as a raw dynamic enumerable without PSObject wrapping. Use only for advanced performance use cases.
Return the result as a raw dynamic enumerable without PSObject wrapping. Use only for advanced performance use cases.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="true">SwitchParameter</command:parameterValue>
      </command:parameter>
      <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="1" aliases="none">
        <maml:name>SheetName</maml:name>
        <maml:description>
          <maml:para>Specifies the name(s) of the sheet(s) to import. If not specified, imports from the first sheet.
Names of sheet(s) to import. If not specified, imports the first sheet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="true">String[]</command:parameterValue>
      </command:parameter>
      <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
        <maml:name>StartCell</maml:name>
        <maml:description>
          <maml:para>Specifies the starting cell for data import (e.g., 'A1', 'B2'). Useful when data doesn't start at A1.
Specify the starting cell for data import (e.g., 'A1', 'B2').</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="true">String</command:parameterValue>
      </command:parameter>
      <command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="0" aliases="none">
        <maml:name>Workbook</maml:name>
        <maml:description>
          <maml:para>Specifies the XLWorkbook object to import from. Get this from Get-Workbook.
Workbook object to import. Get using Get-Workbook.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="true">IXLWorkbook</command:parameterValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <dev:name>String</dev:name>
        </dev:type>
        <maml:description>
          <maml:para>Accepts file paths as input.</maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <dev:name>String</dev:name>
        </dev:type>
        <maml:description>
          <maml:para>Accepts an array of file paths for batch import.</maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <dev:name>IXLWorkbook</dev:name>
        </dev:type>
        <maml:description>
          <maml:para>Accepts XLWorkbook objects from Get-Workbook.</maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <dev:name>IXLRangeBase</dev:name>
        </dev:type>
        <maml:description>
          <maml:para>Accepts range objects from worksheets or tables.</maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <dev:name>String</dev:name>
        </dev:type>
        <maml:description>
          <maml:para>{{ Fill in the Description }}</maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <dev:name>PSObject</dev:name>
        </dev:type>
        <maml:description>
          <maml:para>Returns PSObject instances representing each row of data, with properties named from the header row.</maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <dev:name>Object</dev:name>
        </dev:type>
        <maml:description>
          <maml:para>{{ Fill in the Description }}</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para>- Supports .xlsx and .csv file formats
- The first row is treated as headers by default; use -NoHeaders to disable this
- Empty rows are skipped by default; use -IncludeEmptyRows to include them
- Cannot use -Destination parameter with multiple workbooks; save individually instead</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>--------- Example 1: Import data from a file ---------</maml:title>
        <maml:introduction>
          <maml:para>```powershell
Import-Workbook -Path 'C:\Data\Spreadsheet.xlsx'
```</maml:para>
          <maml:para>&#x80;</maml:para>
          <maml:para>Imports data from the first sheet of the Excel file. The first row is treated as column headers.</maml:para>
        </maml:introduction>
        <dev:code />
        <dev:remarks />
      </command:example>
      <command:example>
        <maml:title>--------- Example 2: Import data using pipeline ---------</maml:title>
        <maml:introduction>
          <maml:para>```powershell
Get-Workbook -Path 'C:\Data\Spreadsheet.xlsx' | Import-Workbook
```</maml:para>
          <maml:para>&#x80;</maml:para>
          <maml:para>Gets the workbook and pipes it to Import-Workbook to import the data.</maml:para>
        </maml:introduction>
        <dev:code />
        <dev:remarks />
      </command:example>
      <command:example>
        <maml:title>--------- Example 3: Import specific sheet ---------</maml:title>
        <maml:introduction>
          <maml:para>```powershell
Import-Workbook -Path 'C:\Data\Spreadsheet.xlsx' -SheetName 'Sales'
```</maml:para>
          <maml:para>&#x80;</maml:para>
          <maml:para>Imports data from the sheet named 'Sales' instead of the first sheet.</maml:para>
        </maml:introduction>
        <dev:code />
        <dev:remarks />
      </command:example>
      <command:example>
        <maml:title>--------- Example 4: Import data without headers ---------</maml:title>
        <maml:introduction>
          <maml:para>```powershell
Import-Workbook -Path 'C:\Data\Spreadsheet.xlsx' -NoHeaders
```</maml:para>
          <maml:para>&#x80;</maml:para>
          <maml:para>Imports all rows as data without treating the first row as headers. Properties will be named Column1, Column2, etc.</maml:para>
        </maml:introduction>
        <dev:code />
        <dev:remarks />
      </command:example>
      <command:example>
        <maml:title>--------- Example 5: Import from a specific cell range ---------</maml:title>
        <maml:introduction>
          <maml:para>```powershell
Import-Workbook -Path 'C:\Data\Spreadsheet.xlsx' -StartCell 'B2' -EndCell 'D10'
```</maml:para>
          <maml:para>&#x80;</maml:para>
          <maml:para>Imports data from the range B2:D10, useful when headers are not in the first row.</maml:para>
        </maml:introduction>
        <dev:code />
        <dev:remarks />
      </command:example>
      <command:example>
        <maml:title>--------- Example 6: Import from workbook object ---------</maml:title>
        <maml:introduction>
          <maml:para>```powershell
$workbook = Get-Workbook -Path 'C:\Data\Spreadsheet.xlsx'
$worksheet = $workbook.Worksheets | Where-Object Name -eq 'Sheet1'
$worksheet | Import-Workbook
```</maml:para>
          <maml:para>&#x80;</maml:para>
          <maml:para>Imports data by piping a worksheet object to the cmdlet.</maml:para>
        </maml:introduction>
        <dev:code />
        <dev:remarks />
      </command:example>
      <command:example>
        <maml:title>--------- Example 7: Import data with empty rows included ---------</maml:title>
        <maml:introduction>
          <maml:para>```powershell
Import-Workbook -Path 'C:\Data\Spreadsheet.xlsx' -IncludeEmptyRows
```</maml:para>
          <maml:para>&#x80;</maml:para>
          <maml:para>Includes empty rows in the output. By default, empty rows are skipped.</maml:para>
        </maml:introduction>
        <dev:code />
        <dev:remarks />
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Version</maml:linkText>
        <command:uri />
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Get-Workbook</maml:linkText>
        <command:uri>Get-Workbook.md</command:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Save-Workbook</maml:linkText>
        <command:uri>Save-Workbook.md</command:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Export-Workbook</maml:linkText>
        <command:uri>Export-Workbook.md</command:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command>
    <command:details>
      <command:name>Save-Workbook</command:name>
      <maml:description>
        <maml:para>Saves an Excel workbook to a file.</maml:para>
      </maml:description>
      <command:verb>Save</command:verb>
      <command:noun>Workbook</command:noun>
    </command:details>
    <maml:description>
      <maml:para>The Save-Workbook cmdlet saves an XLWorkbook object to an Excel file. If a destination is not specified, the workbook is saved to its original file location. Multiple workbooks can be saved by piping them to the cmdlet. The -Force parameter can be used to overwrite existing files or create directories.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Save-Workbook</maml:name>
        <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="1" aliases="none">
          <maml:name>Destination</maml:name>
          <maml:description>
            <maml:para>Specifies the file path where the workbook will be saved. If not specified, the workbook will be saved to its original file location.</maml:para>
          </maml:description>
          <command:parameterValue required="false" variableLength="true">String</command:parameterValue>
        </command:parameter>
        <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
          <maml:name>Force</maml:name>
          <maml:description>
            <maml:para>Overwrites the destination file if it exists. Can also be used to create directory paths that do not exist.</maml:para>
          </maml:description>
          <command:parameterValue required="false" variableLength="true">SwitchParameter</command:parameterValue>
        </command:parameter>
        <command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="0" aliases="none">
          <maml:name>Workbook</maml:name>
          <maml:description>
            <maml:para>Specifies the XLWorkbook object to save. Obtain this from Get-Workbook.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="true">IXLWorkbook</command:parameterValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="1" aliases="none">
        <maml:name>Destination</maml:name>
        <maml:description>
          <maml:para>Specifies the file path where the workbook will be saved. If not specified, the workbook will be saved to its original file location.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="true">String</command:parameterValue>
      </command:parameter>
      <command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="Named" aliases="none">
        <maml:name>Force</maml:name>
        <maml:description>
          <maml:para>Overwrites the destination file if it exists. Can also be used to create directory paths that do not exist.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="true">SwitchParameter</command:parameterValue>
      </command:parameter>
      <command:parameter required="true" variableLength="false" globbing="false" pipelineInput="false" position="0" aliases="none">
        <maml:name>Workbook</maml:name>
        <maml:description>
          <maml:para>Specifies the XLWorkbook object to save. Obtain this from Get-Workbook.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="true">IXLWorkbook</command:parameterValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <dev:name>IXLWorkbook</dev:name>
        </dev:type>
        <maml:description>
          <maml:para>Accepts XLWorkbook objects from Get-Workbook.</maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para>- Cannot use -Destination parameter with multiple workbooks; save individually instead
- If directory does not exist, use -Force to create the directory path
- If file exists, use -Force to overwrite it
- The workbook must be properly opened with Get-Workbook before saving
- Use -Verbose to see detailed status messages</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>--------- Example 1: Save workbook to its original location ---------</maml:title>
        <maml:introduction>
          <maml:para>```powershell
$workbook = Get-Workbook -Path 'C:\Data\Spreadsheet.xlsx'
Save-Workbook -Workbook $workbook
```</maml:para>
          <maml:para>&#x80;</maml:para>
          <maml:para>Saves the workbook back to its original file location.</maml:para>
        </maml:introduction>
        <dev:code />
        <dev:remarks />
      </command:example>
      <command:example>
        <maml:title>--------- Example 2: Save workbook to a new location ---------</maml:title>
        <maml:introduction>
          <maml:para>```powershell
$workbook = Get-Workbook -Path 'C:\Data\Spreadsheet.xlsx'
Save-Workbook -Workbook $workbook -Destination 'C:\Data\Backup.xlsx'
```</maml:para>
          <maml:para>&#x80;</maml:para>
          <maml:para>Saves the workbook to a new file path.</maml:para>
        </maml:introduction>
        <dev:code />
        <dev:remarks />
      </command:example>
      <command:example>
        <maml:title>--------- Example 3: Overwrite existing file ---------</maml:title>
        <maml:introduction>
          <maml:para>```powershell
$workbook = Get-Workbook -Path 'C:\Data\Spreadsheet.xlsx'
Save-Workbook -Workbook $workbook -Destination 'C:\Data\Export.xlsx' -Force
```</maml:para>
          <maml:para>&#x80;</maml:para>
          <maml:para>Uses the -Force parameter to overwrite an existing file.</maml:para>
        </maml:introduction>
        <dev:code />
        <dev:remarks />
      </command:example>
      <command:example>
        <maml:title>--------- Example 4: Use pipeline input ---------</maml:title>
        <maml:introduction>
          <maml:para>```powershell
Get-Workbook -Path 'C:\Data\Spreadsheet.xlsx' | Save-Workbook -Destination 'C:\Data\Copy.xlsx'
```</maml:para>
          <maml:para>&#x80;</maml:para>
          <maml:para>Gets the workbook and pipes it to Save-Workbook to save to a new location.</maml:para>
        </maml:introduction>
        <dev:code />
        <dev:remarks />
      </command:example>
      <command:example>
        <maml:title>--------- Example 5: Create directory and save ---------</maml:title>
        <maml:introduction>
          <maml:para>```powershell
$workbook = Get-Workbook -Path 'C:\Data\Spreadsheet.xlsx'
Save-Workbook -Workbook $workbook -Destination 'C:\Backup\Archive\Export.xlsx' -Force
```</maml:para>
          <maml:para>&#x80;</maml:para>
          <maml:para>Uses -Force to create the directory path if it doesn't exist.</maml:para>
        </maml:introduction>
        <dev:code />
        <dev:remarks />
      </command:example>
      <command:example>
        <maml:title>--------- Example 6: Save multiple workbooks ---------</maml:title>
        <maml:introduction>
          <maml:para>```powershell
@('C:\Data\File1.xlsx', 'C:\Data\File2.xlsx') | Get-Workbook | Save-Workbook
```</maml:para>
          <maml:para>&#x80;</maml:para>
          <maml:para>Saves multiple workbooks back to their original locations.</maml:para>
        </maml:introduction>
        <dev:code />
        <dev:remarks />
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Version</maml:linkText>
        <command:uri />
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Get-Workbook</maml:linkText>
        <command:uri>Get-Workbook.md</command:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Import-Workbook</maml:linkText>
        <command:uri>Import-Workbook.md</command:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Export-Workbook</maml:linkText>
        <command:uri>Export-Workbook.md</command:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
</helpItems>