PowerShell tạo tệp XLSX mà không cần Excel

Một thẻ đã tồn tại với tên chi nhánh được cung cấp. Nhiều lệnh Git chấp nhận cả tên thẻ và tên nhánh, vì vậy việc tạo nhánh này có thể gây ra hành vi không mong muốn. Bạn có chắc chắn muốn tạo nhánh này không?

Mô-đun PowerShell để nhập/xuất bảng tính Excel mà không cần Excel. Kiểm tra cách làm video https. //www. youtube. com/watch?v=U3Ne_yX4tYo&list=PL5uoqS92stXioZw-u-ze_NtvSo0k0K0kq

Dự án nhỏ để tạo tệp Excel mà không cần cài đặt Microsoft Excel

Làm việc với Excel mà không cần cài đặt Excel

Một mô-đun powershell nhẹ duy nhất với các lệnh ghép ngắn để truy vấn/cập nhật cơ sở dữ liệu với bất kỳ. nhà cung cấp mạng. SQL/OLEDB/ODBC/

Lệnh ghép ngắn CData cho Microsoft Excel

Lệnh ghép ngắn CData cho Microsoft SharePoint Excel

Lệnh ghép ngắn CData cho Microsoft Excel Online

Các công việc BackgroundJob tích hợp sẵn của PowerShell (Start-Job) được chạy trong các quy trình riêng biệt trên máy cục bộ. Họ cung cấp sự cô lập tuyệt vời nhưng nặng về tài nguyên. Chạy hàng trăm công việc BackgroundJob có thể nhanh chóng hấp thụ tài nguyên hệ thống. Mô-đun này mở rộng PowerShell BackgroundJob hiện có để bao gồm một công việc ThreadJob dựa trên luồng mới. . Thêm thông tin

Một chức năng tiện dụng để tạo một mảng tạm thời ($blah) từ danh sách dữ liệu tùy ý (i. e. địa chỉ email), hữu ích để chạy một vòng lặp chống lại. Sau khi tải chức năng (hoặc thêm vào cấu hình PowerShell của bạn), hãy thực thi chức năng bằng cách nhập 'blah', sau đó dán vào danh sách dữ liệu mà bạn muốn thực hiện một lệnh chung đối với. Ví dụ, từ. Thêm thông tin

Dự án đơn giản tạo tài liệu Active Directory, AWS, Office 365 (Exchange, Azure AD) cho Microsoft Word, Microsoft Excel và Microsoft SQL. Nhiều thứ để làm theo

Sử dụng tệp Excel làm tệp tính năng BDD, lấy danh sách ví dụ và danh sách trường hợp thử nghiệm từ tệp excel

Mô-đun Powershell cho Tự động hóa Excel

Mô-đun PowerShell dành cho các chức năng và tài nguyên liên quan đến Excel được sử dụng trong BitTitan Runbooks

Mô-đun PowerShell dành cho các chức năng và tài nguyên liên quan đến Excel được sử dụng trong BitTitan Runbooks

Mô-đun PowerShell để nhập bảng tính Excel mà không cần Excel. Tạo Đối tượng PowerShell từ bảng tính Excel đã nhập

Tập lệnh này sẽ viết tên của tất cả các phạm vi ô trên trang tính của loại đầu vào. Nó sẽ truyền các tên có và không có tham chiếu phạm vi

Tập lệnh này sẽ viết tên của tất cả các ô trên trang tính với đặc điểm đầu vào

Tập lệnh này sẽ viết tên của tất cả các đối tượng trên trang tính của loại đầu vào

Tập lệnh này sẽ ghi giá trị của ô đầu vào vào bàn điều khiển

Tập lệnh này sẽ chọn phạm vi đầu vào hoặc đối tượng trong trang tính đã chỉ định. Không cần phải được nhìn thấy

PowerShell không đi kèm với hỗ trợ riêng cho. các tệp xlsx mặc dù. Đó là lý do tại sao trước đây người dùng sử dụng cách xuất dữ liệu excel sang csv, sau đó sử dụng

Install-Module -Name ImportExcel -Force
2để đọc dữ liệu đã xuất vào PowerShell

Cách giải quyết này tạo ra nhiều công việc hơn và có một số nhược điểm khác. Nhờ có mô-đun miễn phí ImportExcel, việc đi thêm tuyến đường qua csv không còn cần thiết nữa. Bây giờ bạn có thể trực tiếp đọc và viết. dữ liệu xlsx. Microsoft Office không bắt buộc

Trong bài viết này, bạn sẽ học cách đọc và viết. xlsx và. xlsm chỉ trong một dòng mã. Ngoài ra, tôi cung cấp cho bạn

Install-Module -Name ImportExcel -Force
3, tự động chuyển đổi. tập tin xls để. xlsx và. các loại tệp xlsm. Điều đó quan trọng vì ImportExcel chỉ có thể xử lý các giao diện hiện đại. xlsx và. các loại tệp xlsm. càng già. tệp excel xls sử dụng định dạng nhị phân độc quyền mà chỉ excel mới biết cách đọc

Install-Module -Name ImportExcel -Force
3 có thể rất hữu ích khi bạn cần chuyển đổi hàng loạt tệp excel cũ sang định dạng hiện đại

Nó cũng minh họa cách truy cập mô hình đối tượng excel và quan trọng hơn là cách giải phóng các đối tượng COM để bạn không bị rò rỉ bộ nhớ và quá trình ma

Thêm hỗ trợ Excel vào PowerShell

Cảm ơn Doug Finke và mô-đun miễn phí tuyệt vời của anh ấy ImportExcel, đọc và viết. xlsx bây giờ rất nhanh - không cần cài đặt Office. Chỉ cần tải xuống và cài đặt mô-đun miễn phí này từ Thư viện PowerShell

Install-Module -Name ImportExcel -Scope CurrentUser -Force

Nếu bạn có sẵn đặc quyền của Quản trị viên, bạn có thể muốn cài đặt mô-đun cho Tất cả người dùng để thay thế. Điều này đảm bảo mô-đun khả dụng cho tất cả người dùng, nhưng quan trọng hơn, nó làm cho mô-đun khả dụng cho cả Windows PowerShell và PowerShell 7

Install-Module -Name ImportExcel -Force

Khi bạn cài đặt các mô-đun trong phạm vi Người dùng hiện tại, các mô-đun chỉ khả dụng cho phiên bản PowerShell mà bạn đã sử dụng để thực hiện cài đặt, do đó, bạn sẽ phải cài đặt mô-đun hai lần ở các vị trí khác nhau

Đọc và ghi tệp Excel

Hai lệnh ghép ngắn quan trọng nhất từ ​​mô-đun này là

  • Install-Module -Name ImportExcel -Force
    
    5. có một đường dẫn đến một. xlsx và trả về tất cả dữ liệu từ trang tính mặc định. Sử dụng tham số -WorksheetName để chỉ định một trang tính nhất định. Thí dụ

    # import excel file and show in gridview (make sure file exists!)
    $Path = "c:\path\to\some\excel.xlsx"
    Import-Excel -Path $Path | Out-GridView
    

  • Install-Module -Name ImportExcel -Force
    
    6. lưu tất cả dữ liệu đường ống vào *. tập tin xlsx. Sử dụng tham số -WorksheetName để chỉ định một trang tính nhất định. Theo mặc định, dữ liệu hiện có trên trang tính sẽ bị ghi đè. Thí dụ

    ________số 8_______

Chơi với dữ liệu mẫu

Hãy chơi với các lệnh excel mới. Viết file excel đơn giản. chuyển dữ liệu sang

Install-Module -Name ImportExcel -Force
6 để tạo tệp excel mới

$Path = "$env:temp\listOfServices.xlsx"
Get-Service | Export-Excel -Path $Path -AutoSize -AutoFilter -FreezeTopRow -BoldTopRow -ClearSheet -WorksheetName 'List of Services' -Show

Để chơi với

Install-Module -Name ImportExcel -Force
5, trước tiên hãy truy xuất một số tệp dữ liệu mẫu trong thế giới thực

Tải xuống dữ liệu mẫu

Tìm dữ liệu mẫu excel thật dễ dàng. chỉ cần google cho Tải xuống dữ liệu mẫu Excel để tìm ra các url. Chúng đến dưới dạng các tệp riêng lẻ và kho lưu trữ ZIP. Để mang lại trải nghiệm thú vị khi tải xuống, tôi đã tạo một loạt chức năng trợ giúp

Để tải xuống các tệp, chỉ cần sử dụng

Install-Module -Name ImportExcel -Force
9 và
# import excel file and show in gridview (make sure file exists!)
$Path = "c:\path\to\some\excel.xlsx"
Import-Excel -Path $Path | Out-GridView
0

# use TLS1.2 with HTTPS:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

# creates folder if it does not yet exist:
filter Assert-FolderExists
{
  $exists = Test-Path -Path $_ -PathType Container
  if (!$exists) { 
    Write-Warning "$_ did not exist. Folder created."
    $null = New-Item -Path $_ -ItemType Directory 
  }
}

# download, unblock and extract zip files
filter Download-Zip($Path)
{
  # download to temp file:
  $temp = "$env:temp\temp.zip"
  Invoke-WebRequest -Uri $_ -OutFile $temp
  # unblock:
  Unblock-File -Path $temp
  # extract archive content:
  Expand-Archive -Path $temp -DestinationPath $Path -Force
  
  # report
  $zip = [System.IO.Compression.ZipFile]::OpenRead($temp)
  $zip.Entries | ForEach-Object { Write-Warning "Download: $_" }
  $zip.Dispose()
  
  # remove temp file:
  Remove-Item -Path $temp
}

# test whether filename is valid:
function Test-ValidFileName($FileName)
{
  $FileName.IndexOfAny([System.IO.Path]::GetInvalidFileNameChars()) -eq -1
}

# download and unblock file:
filter Download-File($Path, $FileName)
{
  # does the url specify a filename?
  if ([string]::IsNullOrWhiteSpace($FileName))
  {
    # take filename from url:
    $FileName = $_.Split('/')[-1]
    # remove url parameters:
    $FileName = $FileName.Split('?')[0]
    # test for valid file name:
    $isValid = Test-ValidFileName -FileName $FileName
    if (!$isValid)
    {
      throw "Url contains no valid file name. $FileName is not valid. Use parameter -FileName to specify a valid filename."
    }
  }
  
  $filePath = Join-Path -Path $Path -ChildPath $FileName
  Invoke-WebRequest -Uri $_ -OutFile $filePath
  # unblock:
  Unblock-File -Path $Path
  
  Write-Warning "Download: $FileName"
}

# create local folder for downloaded files:
($OutPath = "$env:temp\excelsampledata") | Assert-FolderExists

# download various excel sample files:
'https://www.contextures.com/SampleData.zip' | Download-Zip -Path $OutPath
'https://go.microsoft.com/fwlink/?LinkID=521962' | Download-File -Path $OutPath -FileName financial.xlsx
'http://www.principlesofeconometrics.com/excel/theories.xls' | Download-File -Path $OutPath 
'http://www.principlesofeconometrics.com/excel/food.xls' | Download-File -Path $OutPath 
'https://www.who.int/healthinfo/statistics/whostat2005_mortality.xls?ua=1' | Download-File -Path $OutPath 
'https://www.who.int/healthinfo/statistics/whostat2005_demographics.xls?ua=1' | Download-File -Path $OutPath 

Khi bạn chạy mã này, nó sẽ tải xuống một loạt tệp mẫu excel

WARNING: Download: SampleData.xlsx
WARNING: Download: financial.xlsx
WARNING: Download: theories.xls
WARNING: Download: food.xls
WARNING: Download: whostat2005_mortality.xls
WARNING: Download: whostat2005_demographics.xls

Đọc tệp Excel

Để đọc dữ liệu trực tiếp từ tệp excel, hãy sử dụng

Install-Module -Name ImportExcel -Force
5. Ví dụ: để chỉ nhận dữ liệu tài chính cho tháng 12, hãy thử điều này

# path with excel files
# (assuming you downloaded the sample data as instructed before)
Set-Location -Path "$env:temp\excelsampledata"

Import-Excel -Path .\financial.xlsx | Where-Object 'Month Number' -eq 12 | Out-GridView

Theo mặc định,

Install-Module -Name ImportExcel -Force
5 đọc dữ liệu từ trang tính đầu tiên. Nếu tệp của bạn chứa nhiều hơn một trang tính, hãy sử dụng tham số -WorksheetName để chỉ định tên của nó

Để nhóm các quốc gia cho tháng 12, chỉ cần sử dụng các lệnh ghép ngắn đường ống PowerShell phổ biến

Rõ ràng, bạn cũng có thể làm điều này trực tiếp với excel. Đây là về tự động hóa (trong trường hợp bạn cần thực hiện các loại phân tích này thường xuyên) và dành cho các chàng trai nhà PowerShell, những người có thể không biết cách xoay vòng trong excel nhưng biết các công cụ của họ trong PowerShell

Và đó là về việc học. không có cách nào tốt hơn để tìm hiểu các lệnh ghép ngắn đường ống PowerShell

# path with excel files
# (assuming you downloaded the sample data as instructed before)
Set-Location -Path "$env:temp\excelsampledata"

Import-Excel -Path .\financial.xlsx | Where-Object 'Month Number' -eq 12 | Group-Object -Property Country -NoElement | Sort-Object -Property Count -Descending

Đây là kết quả

Count Name                     
----- ----                     
   21 Germany                  
   21 United States of America 
   21 Canada                   
   21 France                   
   21 Mexico  

Truy cập tệp XLS

Tin xấu là. . tệp xls không thể truy cập được. Họ sử dụng định dạng nhị phân độc quyền mà chỉ excel mới có thể đọc được

Tin tốt là. miễn là bạn đã cài đặt excel, việc chuyển đổi là chuyện nhỏ. tập tin xls để. tập tin xlsx. Nếu bạn thực sự vẫn đang sử dụng. xls, bạn nên xem xét việc chuyển đổi này mãi mãi. . xls đã thực sự lỗi thời và không còn được sử dụng nữa

Chuyển đổi XLS sang XLSX

Ở trên tôi đã tải xuống một loạt. xls không thể được xử lý bởi

Install-Module -Name ImportExcel -Force
5. đáng tiếc

Dưới đây là hàm

Install-Module -Name ImportExcel -Force
3 tự động chuyển đổi. tập tin xls để. xlsx và. Tuy nhiên, các tệp xlsm. Tập lệnh yêu cầu cài đặt Microsoft Office trên hộp của bạn vì chỉ excel mới biết cách mở định dạng nhị phân được sử dụng trong. tập tin xls

Install-Module -Name ImportExcel -Force
0

Nó nằm ngoài phạm vi của bài viết này để thảo luận chi tiết về chức năng. Mặc dù vậy, tôi muốn chỉ ra rằng mã minh họa các khía cạnh quan trọng khi sử dụng các đối tượng COM trong PowerShell

Khi sử dụng các đối tượng COM như Excel. Ứng dụng, có thể khó giải phóng tất cả các tham chiếu đối tượng ở cuối. Khi bạn làm điều này sai, các tham chiếu sẽ vẫn tồn tại và quá trình excel trong bộ nhớ cũng vậy. Tất nhiên, bạn luôn có thể tắt tiến trình sau khi sử dụng nhưng điều này có thể làm hỏng excel và lần sau khi bạn khởi chạy, nó sẽ bắt đầu ở chế độ khôi phục

Cách tiếp cận tốt hơn là đảm bảo rằng bạn đang lưu trữ từng tham chiếu đối tượng trong một biến chuyên dụng. Tiếp theo, đảm bảo rằng bạn chủ động giải phóng từng tham chiếu sau khi sử dụng bằng cách gọi ReleaseComObject()

Khi bạn đã làm đúng, không có tham chiếu mở nào tồn tại và khi bạn gọi Quit(), excel sẽ bị xóa khỏi danh sách quy trình của bạn