Là một số bước bạn phải thực hiện để chuyển đổi XLSX thành CSV trong PowerShell, nhưng trước khi bạn làm điều đó, hãy tạo tệp Excel của bạn và lưu nó. Tôi sẽ sử dụng một danh sách một vài tên và độ tuổi được lưu dưới dạng tệp XLSX. Những gì bạn cần nhớ là tệp chỉ nên có một bảng tính, nếu không, chức năng sẽ hiển thị thông tin có ghi đè lên bảng thứ nhất với trang thứ hai hay không. Tôi đã lưu nó ở vị trí sau: Sau khi bạn mở cửa sổ PowerShell, hãy sao chép mã này và chèn nó bằng nhấp chuột đúng. Nó sẽ tạo ra một tệp CSV mới. Ví dụ, nếu bạn mở tệp CSV trong trình soạn thảo văn bản, Notepad ++, bạn sẽ có các từ được phân tách bằng dấu phẩy. Giải thích chức năng Ở đây, chúng tôi đặt thư mục và vị trí tệp.Lưu một tập tin
D:\Excel\list_of_names.xlsx
Mở cửa sổ PowerShell
Function ExcelToCsv [$File] {
$myDir = "D:\Excel"
$excelFile = "$myDir\" + $File + ".xlsx"
$Excel = New-Object -ComObject Excel.Application
$wb = $Excel.Workbooks.Open[$excelFile]
foreach [$ws in $wb.Worksheets] {
$ws.SaveAs["$myDir\" + $File + ".csv", 6]
}
$Excel.Quit[]
}
$FileName = "list_of_names"
ExcelToCsv -File $FileName
$myDir = "D:\Excel"
$excelFile = "$myDir\" + $File + ".xlsx"
Mã này tạo ra một đối tượng COM để sử dụng các tính năng Excel.
$Excel = New-Object -ComObject Excel.Application
Mở tệp Excel.
$wb = $Excel.Workbooks.Open[$excelFile]
Phần tiếp theo là vòng lặp foreach lưu mỗi tờ dưới dạng tệp. Nếu bạn có nhiều tờ bên trong một bảng tính, nó sẽ như bạn cho dù bạn muốn ghi đè.
Saveas sử dụng 6 làm tham số thứ hai. Bạn cần thêm nó, vì vậy tệp sẽ được lưu dưới dạng mẫu văn bản và ứng dụng sẽ không cố gắng lưu định dạng.
$ws.SaveAs["$myDir\" + $File + ".csv", 6]
Nếu bạn cố gắng lưu định dạng, bạn sẽ nhận được một loạt rác nếu bạn mở tệp bên trong trình soạn thảo văn bản.
Chuyển đổi nhiều tờ thành nhiều tệp
Khi bắt đầu bài học này, tôi đã viết rằng bạn chỉ nên có một tờ bên trong sổ làm việc. Chúng tôi có thể dễ dàng sửa đổi mã, để xử lý một sổ làm việc với nhiều tờ.
Thay thế mã này:
$ws.SaveAs["$myDir\" + $File + ".csv", 6]
Và dán mã này:
$ws.SaveAs["$myDir\" + $File + " " + $ws.name + ".csv", 6]
Bây giờ, chạy mã và chức năng sẽ tạo một tệp mới cho mỗi bảng tính.
Quan điểm đăng: 33.419 33,419
Trong môi trường BI, chúng tôi tìm thấy rất nhiều dữ liệu không được lưu trữ trong cơ sở dữ liệu và cũng có rất nhiều người dùng dễ dàng và ưu tiên lưu trữ dữ liệu trong bảng tính Excel. Vì vậy, trong bài đăng này, tôi sẽ chỉ cho bạn cách chuyển đổi tệp Excel bằng tập lệnh PowerShell.
Trong thực tế, đây là một quá trình rất dễ dàng, chúng ta có thể chuyển đổi tất cả các tab trong Excel hoặc chỉ chuyển đổi một tab duy nhất. Vì vậy, theo cách đó, chuyển đổi thành tệp CSV, nó có thể dễ dàng thêm vào cơ sở dữ liệu thông qua một quy trình hoặc công cụ ETL, thay vì tệp excel gốc. Đối với tập lệnh đầu tiên, trong đó chúng tôi chuyển đổi tất cả các tab của tệp excel, chỉ cần nhập Tên của thư mục, tên của tệp và định dạng tệp, trong tập lệnh bên dưới.
For the first script, where we convert all tabs of an Excel file, just enter the name of the directory, the name of the file and the file format, in the script below.
Tập lệnh sử dụng hàm để chuyển đổi các tệp Excel với định dạng XLSX sang CSV, tuy nhiên định dạng này có thể được thay đổi trong tập lệnh.
# To execute the script without agreeing with the execution policy
Set-ExecutionPolicy Bypass -Scope Process# Defines the directory where the file is located
$dir = "D:\"# Defines the name of the Excel file
$excelFileName = "YOUR_FILE_NAME"# Define a function to convert the file
Function ExportWSToCSV [$excelFileName, $csvLoc]
{
$excelFile = $dir + $excelFileName + ".xlsx"
$E = New-Object -ComObject Excel.Application
$E.Visible = $false
$E.DisplayAlerts = $false
$wb = $E.Workbooks.Open[$excelFile]
foreach [$ws in $wb.Worksheets]
{
$n = $excelFileName + "_" + $WS.Name
$ws.SaveAs[$csvLoc + $n + ".csv", 6]
}
$E.Quit[]
}# For each file in the directory with the xlsx format, convert to CSV using the function above
$ens = Get-ChildItem $dir -filter *.xlsx
foreach[$e in $ens]
{
ExportWSToCSV -excelFileName $e.BaseName -csvLoc $dir
}
Đối với tập lệnh thứ hai, trong đó chúng tôi chỉ chuyển đổi một tab của tệp Excel, chỉ cần nhập tên của thư mục và tên của tệp trong tập lệnh bên dưới.
# To execute the script without agreeing with the execution policy
Set-ExecutionPolicy Bypass -Scope Process# Defines the directory where the file is located
$dir = "D:\"# Defines the name of the Excel file
$excelFileName = "YOUR_FILE_NAME"# Define a function to convert the file
Function ExportWSToCSV [$excelFileName, $csvLoc]
{
$excelFile = $dir + $excelFileName + ".xlsx"
$E = New-Object -ComObject Excel.Application
$E.Visible = $false
$E.DisplayAlerts = $false
$wb = $E.Workbooks.Open[$excelFile]
foreach [$ws in $wb.Worksheets]
{
$n = $excelFileName
$ws.SaveAs[$csvLoc + $n + ".csv", 6]
}
$E.Quit[]
}# For each file in the directory with the xlsx format, convert to CSV using the function above
$ens = Get-ChildItem $dir -filter *.xlsx
foreach[$e in $ens]
{
ExportWSToCSV -excelFileName $e.BaseName -csvLoc $dir
}
Đó là nó! Bây giờ chúng ta có thể chuyển đổi một tệp Excel thành tệp CSV một cách dễ dàng.
Các tập lệnh cho bài đăng này có thể được tìm thấy trên GitHub của tôi [@guimeditus92].