Hướng dẫn powershell create excel file without excel installed - powershell tạo tệp excel mà không cần cài đặt excel

Khám phá vấn đề

Tôi có nhu cầu lưu trữ dữ liệu vào tệp tương thích Microsoft Excel.

Cố gắng 1: & nbsp; sử dụng mô hình đối tượng excel com. Đây không phải là một giải pháp tốt vì: PowerShell chạy rất thường xuyên trên máy chủ hoặc máy khách mà không cần cài đặt Microsoft Office / Excel. Việc sử dụng đối tượng COM Excel có thể gây ra lỗi trong một tác vụ theo lịch trình. Use the Excel COM object model.
This is not a good solution because:
PowerShell runs very often on Servers or clients without a Microsoft Office / Excel installation.
The use of the Excel COM Object can cause errors inside a Scheduled Task.

Excel có thể đọc và lưu trữ dữ liệu CSV.

Nỗ lực 2: & NBSP; Sử dụng dữ liệu CSV (với Export-CSV) Đây cũng không phải là một giải pháp tốt vì: Use CSV data (with Export-CSV)
This is not a good solution either because:

CSV không chỉ là một loại tệp Excel khác. Khi mở tệp dữ liệu CSV, Microsoft Excel sẽ tự động chuyển đổi dữ liệu. Không thể chấp nhận được. Nếu Microsoft Excel xuất trình bảng tính Excel vào tệp CSV, đầu ra không phải lúc nào cũng tuân theo các quy tắc định dạng CSV. Excel chỉ có báo giá xung quanh các trường nhất định, không phải trong tất cả các lĩnh vực. Điều này dẫn đến các tệp CSV không thể đọc được.
If Microsoft Excel outputs an Excel worksheet into a CSV file, the output does not always follow the CSV format rules. Excel only places quotes around certain fields, not in all fields. This leads to unreadable CSV files.

Tôi đã có những yêu cầu sau:

  • Giải pháp hoạt động trong PowerShell 2.0 và 3.0 (và sau đó)
  • Tạo một tệp tương thích Excel mà không có Excel
  • (Không sử dụng mô hình đối tượng Excel com)
  • Giải pháp hoạt động mà không có công cụ bên thứ 3
  • Nên hoạt động tương tự như máy bay điện tử xuất khẩu-CSV
  • Nên có khả năng nối thêm một bảng tính với dữ liệu (tham số -Append)

Nghiên cứu Internet của tôi cho thấy không có giải pháp phù hợp với các yêu cầu này. Nhưng tôi đã tìm thấy một mã C# để thực hiện công việc. Vì vậy, đây là bản dịch của tôi về mã này thành PowerShell.
But I found a C# code to do the Job. So here is my Translation of this code into PowerShell.

Đối với mã C#, xem tại đây: Cách sử dụng định dạng tệp XML Office và các thành phần đóng gói từ .NET Framework 3.0 để tạo sổ làm việc Excel 2007 đơn giản hoặc một từ đơn giản 2007 tài liệu http://support.microsoft.com/kb/931866 /en-us%20
How to use the Office XML file format and the packaging components from the .NET Framework 3.0 to create a simple Excel 2007 workbook or a simple Word 2007 document
http://support.microsoft.com/kb/931866/en-us%20

Định dạng tệp Excel XLSX

Bắt đầu với phiên bản Microsoft Office của Microsoft 2007 đã thay đổi các định dạng tệp ứng dụng mặc định từ các định dạng đóng, độc quyền, độc quyền (DOC, XLS, PPT) thành các định dạng XML mở mới, mở và tiêu chuẩn hóa (Docx, XLSX và PPTX). Office Open XML (cũng được gọi một cách không chính thức là OOXML hoặc OpenXML) là một định dạng tệp dựa trên XML, được nén. Để đại diện cho bảng tính, biểu đồ, thuyết trình và tài liệu xử lý văn bản.
The Office Open XML (also informally known as OOXML or OpenXML) is a zipped, XML-based file format. To represent spreadsheets, charts, presentations, and word processing documents.

Office Open XML được tiêu chuẩn hóa bởi Hiệp hội các nhà sản xuất máy tính châu Âu (ECMA), nơi họ trở thành ECMA-376 và, trong các phiên bản sau, bởi ISO và IEC (AS ISO/IEC 29500).

Mỗi tệp XML mở là tệp zip (gói) điển hình chứa một số tệp XML được mã hóa UTF-8 ("Phần"). Bên trong các phần XML của các loại và không gian tên của gói hàng Internet đa năng (MIME) được sử dụng làm siêu dữ liệu. Các phần XML (tệp) của gói được mã hóa bằng các ngôn ngữ đánh dấu chuyên dụng. Trong trường hợp của Microsoft Excel, đây là ngôn ngữ đánh dấu có tên là bảng tính. Gói cũng chứa các tập tin quan hệ (một phần). Các bộ phận mối quan hệ có phần mở rộng. Chúng có thể được tìm thấy trong một thư mục có tên _RELS. Các bộ phận mối quan hệ xác định mối quan hệ giữa các phần bên trong gói (nội bộ) và các tài nguyên bên ngoài gói (bên ngoài). Gói cũng có thể chứa các tệp phương tiện khác (nhị phân) như âm thanh hoặc hình ảnh.
Inside the XML parts of the package Multipurpose Internet Mail Extensions (MIME) types and Namespaces are used as metadata.
The XML parts (files) of the package are encoded in specialized markup languages. In the case of Microsoft Excel, this is the markup language called SpreadsheetML.
The package also contains relationship files (part). The relationship parts have the extension .rels. They can be found in a folder with the name _rels.
The relationship parts define the relationships between the parts inside the package (internal) and to resources outside of the package (external).
The package may also contain other (binary) media files such as sounds or images.

Cấu trúc của gói được tổ chức theo các quy ước đóng gói mở như được nêu trong tiêu chuẩn OOXML.

Bạn có thể xem cấu trúc tệp và các tệp bao gồm một tệp XLSX bằng cách giải nén tệp .xlsx.

Các lớp .NET để tạo tệp XLSX Excel thực sự

Với .NET 3.0 Microsoft đã giới thiệu System.io.Packaging không gian tên sống bên trong WindowsBase.DLL WindowsBase.DLL là một trong những tổ hợp cốt lõi được sử dụng cho Windows Presentation Foundation WPF. . WindowsBase.dll có thể được tìm thấy trong: C: \ Program Files \ tham chiếu Lắp ráp \ Microsoft \ framework \ v3.0 \ windowsbase.dll
WindowsBase.dll is one of the core Assemblies used for Windows Presentation Foundation WPF.
(The Windows Presentation Foundation WPF is Microsoft's next generation UI framework to create applications with a rich user experience even for the new Windows 8 tiles GUI.)
So you don’t have to worry that WindowsBase.dll moves around or goes away.
WindowsBase.dll can be found in:
C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\WindowsBase.dll

Không gian tên System.io.Packaging cung cấp các lớp hỗ trợ các thùng chứa ZIP mở ZIP Office Office và các định dạng khác, lưu trữ nhiều đối tượng dữ liệu trong một thùng chứa. System.io.Packaging chứa lớp Zippackage để hoạt động với các tệp gói nén ZIP.
System.IO.Packaging contains the ZipPackage class to work with Zip compressed package files.

Xem tài liệu Microsoft Developer Network (MSDN) cho không gian tên và các lớp này. http://msdn.microsoft.com/en-us/l Library/system.io.packaging.aspx%20
http://msdn.microsoft.com/en-US/library/System.IO.Packaging.aspx%20

PowerShell có thể sử dụng không gian tên .NET này và có thể dễ dàng xử lý các tệp XML, vì vậy đây là cách để đi.

Mã PowerShell để tải lắp ráp WindowsBase.dll:

$Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")


Giải phẫu tệp gói XLSX Excel tối thiểu

Số lượng và loại của các bộ phận gói XLSX sẽ thay đổi dựa trên những gì có trong bảng tính. Tôi sẽ mô tả các nhu cầu XLSX tối thiểu ở đây:

Cấu trúc gói tối thiểu

Ví dụ về cấu trúc cơ bản tối thiểu, của tệp gói XLSX, với 1 bảng tính bắt buộc:

Không
./_rels/.rels
./xl/workbook.xml
./xl/_rels/workbook.xml.rels
./xl/worksheets/sheet1.xml

Các bộ phận gói tối thiểu

Yêu cầu là tệp chính: [content_types] .xml

Phần cần thiết cho tất cả các tài liệu XML mở

  • Ba loại nội dung phải được xác định:
  • 1. Tài liệu chính của bảng tính (cho phần bắt đầu)
  • 2. Bảng tính
  • 3. Mối quan hệ gói (cho các mối quan hệ cần thiết)

[Content_Types] .xml Phần (tệp) được tạo tự động bởi lớp Zippackage khi tạo tệp gói Excel XLSX.

Dưới đây là mã PowerShell để tạo tệp gói trên đĩa:

# create the main package on disk with filemode create

$exPkg = [System.IO.Packaging.Package]::Open "C:\test.xlsx", [System.IO.FileMode]::Create)

Tệp [content_types] .xml chứa các định nghĩa về các loại nội dung có trong gói zip, chẳng hạn như tài liệu chính, chủ đề tài liệu và thuộc tính tệp. Tệp này cũng lưu trữ các định nghĩa về các phần mở rộng tệp được sử dụng trong gói zip, chẳng hạn như các định dạng tệp như .png hoặc .wav. Vì vậy, bạn có thể lưu trữ hình ảnh hoặc âm thanh bên trong một tài liệu.

Ví dụ về một phần tối thiểu [Content_Types] .xml Gói chứa sổ làm việc với một bảng tính:








Yêu cầu tài liệu bắt đầu Phần Phần: Workbook.xml

Workbook.xml yêu cầu một phần mối quan hệ Workbook.xml.RELS liên kết chủ yếu với bảng tính

Ví dụ về một phần bài tập tối thiểu.xml phần:






Tôi sử dụng các lớp .NET XML để tạo phần tài liệu XML từ đầu. Đây là mã PowerShell:

# create the Workbook.xml part XML document

 # create empty XML Document # create empty XML Document

 $Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")1$Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")1

 $Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")3$Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")3

 $Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")5$Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")6$Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")7__18____19$Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")5$Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")6$Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")7$Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")8$Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")9 01

 33

 55

 789789

 # create the main package on disk with filemode create1# create the main package on disk with filemode create1

 # create the main package on disk with filemode create3# create the main package on disk with filemode create3

 # create the main package on disk with filemode create5# create the main package on disk with filemode create5

 # create the main package on disk with filemode create7# create the main package on disk with filemode create8# create the main package on disk with filemode create9# create the main package on disk with filemode create7# create the main package on disk with filemode create8# create the main package on disk with filemode create9

URI được định nghĩa là một đường dẫn tương đối đến root gói. URI xác định phần và (các) thư mục để tạo. Không gian tên trong phương thức Tạo () tuyên bố loại mối quan hệ được xác định từ lược đồ XML Open Open áp dụng. Phương thức GetStream () trả về luồng tệp đích để ghi tài liệu XML.
The Namespace in the Create() method declares the type of relationship being defined from the applicable Office Open XML schema.
The GetStream() Method returns the destination file stream to write the XML document.

$exPkg = [System.IO.Packaging.Package]::Open 0

 $exPkg = [System.IO.Packaging.Package]::Open 2$exPkg = [System.IO.Packaging.Package]::Open 2

 $exPkg = [System.IO.Packaging.Package]::Open 4$exPkg = [System.IO.Packaging.Package]::Open 5$exPkg = [System.IO.Packaging.Package]::Open 6$exPkg = [System.IO.Packaging.Package]::Open 4$exPkg = [System.IO.Packaging.Package]::Open 5$exPkg = [System.IO.Packaging.Package]::Open 6

 $exPkg = [System.IO.Packaging.Package]::Open 8$exPkg = [System.IO.Packaging.Package]::Open 8

 "C:\test.xlsx"0"C:\test.xlsx"19"C:\test.xlsx"0"C:\test.xlsx"19

 "C:\test.xlsx"4"C:\test.xlsx"4

 "C:\test.xlsx"6"C:\test.xlsx"6

 "C:\test.xlsx"8"C:\test.xlsx"8

 , [System.IO.FileMode]::Create)0, [System.IO.FileMode]::Create)0


Yêu cầu: Một phần mối quan hệ (chính)

Phải là trong một thư mục _rels.

Sau khi bạn đã tạo phần workbook.xml, bạn phải tạo mối quan hệ từ [content_types chính] .xml sang tài liệu body workbook.xml.

Tệp .RELS trong các thư mục _RELS là tệp quan hệ cấp cao nhất trong tệp gói XML Office Open Open. Tệp này xác định mối quan hệ giữa các tệp lõi trong gói ZIP và lược đồ XML Open Office áp dụng.
This file defines relationships between core files in the ZIP package and the applicable Office Open XML schema.

Tệp mối quan hệ chính ".RELS" và thư mục "_RELS" của nó được tự động tạo bởi một cuộc gọi đến phương thức createrelationship () từ lớp zippackage.

Mục tiêu của mối quan hệ là vị trí của tệp được tham chiếu. Mục tiêu có thể nằm trong gói ZIP XLSX (bên trong) hoặc bên ngoài (bên ngoài) của gói ZIP XLSX. Chúng tôi lưu trữ tất cả các tệp và thông tin bên trong gói zip, vì vậy chúng tôi sử dụng chế độ đích bên trong.

Không gian tên tuyên bố loại mối quan hệ được xác định từ lược đồ XML Open Open áp dụng. Trong trường hợp này, tập tin workbook.xml đang được định nghĩa là loại hành trình. Thông tin này nói với Excel rằng tập tin Workbook.xml chứa phần thân tài liệu.

ID mối quan hệ (RID1 trong trường hợp này) chỉ đơn giản là cung cấp một định danh duy nhất cho tệp được tham chiếu.

Mã PowerShell để tạo mối quan hệ giữa các bộ phận gói [Content_Types] .xml và Sổ làm việc tài liệu chính.xml

, [System.IO.FileMode]::Create)1


Yêu cầu một bảng tính: Sheet1.xml

Bên trong phần XML bảng tính, cần có nút, nhưng có thể trống

Ví dụ về phần XML bảng tính tối thiểu:




Tôi sử dụng các lớp .NET XML để tạo phần tài liệu XML từ đầu. Tên của phần bảng tính được sử dụng trong URI, được tạo động với bảng mẫu + số + .xml trong biến $ newWorkSheetPartName. .

, [System.IO.FileMode]::Create)2

 # create empty XML Document # create empty XML Document

 , [System.IO.FileMode]::Create)6, [System.IO.FileMode]::Create)6

 , [System.IO.FileMode]::Create)8, [System.IO.FileMode]::Create)8

Các# create the Workbook.xml part XML document 0$Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")6$Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")7$Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")8$Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")9 01

 # create the Workbook.xml part XML document 8# create the Workbook.xml part XML document 8

  0 0

  2 39 2 39

  6 6

  8 8

 # create empty XML Document 0# create empty XML Document 0

 # create empty XML Document 2# create empty XML Document 3# create the main package on disk with filemode create9# create empty XML Document 2# create empty XML Document 3# create the main package on disk with filemode create9

URI được định nghĩa là một đường dẫn tương đối đến root gói. URI xác định phần và (các) thư mục để tạo. Không gian tên trong phương thức Tạo () tuyên bố loại mối quan hệ được xác định từ lược đồ XML Open Open áp dụng. Phương thức GetStream () trả về luồng tệp đích để ghi tài liệu XML.
The Namespace in the Create() method declares the type of relationship being defined from the applicable Office Open XML schema.
The GetStream() Method returns the destination file stream to write the XML document.

# create empty XML Document 5

 # create empty XML Document 7# create empty XML Document 7

 # create empty XML Document 9$Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")00$exPkg = [System.IO.Packaging.Package]::Open 6# create empty XML Document 9$Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")00$exPkg = [System.IO.Packaging.Package]::Open 6

 $Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")03$Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")03

 $Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")05$Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")069$Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")05$Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")069

 $Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")09$Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")09

 $Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")11$Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")11

 $Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")13$Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")13

 $Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")15$Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")15


Yêu cầu: Phần mối quan hệ sách bài tập

Mỗi thư mục trong gói ZIP XLSX có thể chứa thư mục _rels của riêng mình để xác định các mối quan hệ trong thư mục đó. Thư mục tài liệu chính "XL" luôn chứa thư mục "_RELS" với các phần quan hệ. Phần mối quan hệ cho Workbook.xml được đặt tên là Workbook.xml.rels.
The relationship part for the workbook.xml is named workbook.xml.rels.

Phần workbook.xml.rels được tạo bằng cách sử dụng phương thức createrelationship () từ lớp Zippackage, thư mục "_RELS" có chứa phần này được tạo tự động bằng cách sử dụng URI. Vì vậy, trước tiên bạn phải tạo các tệp phần gói XML và sau đó bạn có thể tạo mối quan hệ giữa chúng.
So first you have to create the XML package part files and then you can create the relationships between them.

ID duy nhất của mối quan hệ được xác định từ sổ làm việc.xml và được tạo động với số Mẫu RID + trong biến $ newWorkBookRelID (Ví dụ: RID1, RID2, RID3, v.v.

$Null = [Reflection.Assembly]::LoadWithPartialName("WindowsBase")16

Mọi thứ khác là tùy chọn

Nội dung bảng tính

Nếu bạn đặt dữ liệu vào bảng tính Microsoft Excel, Excel sẽ tự động chuyển đổi một số dữ liệu thành định dạng mà Excel nghĩ là tốt nhất. Ví dụ, Excel sẽ loại bỏ số không số hàng đầu của các số, thay đổi định dạng ngày/thời gian hoặc sử dụng định dạng số khoa học cho số lượng lớn và các số khác. Điều này có thể không được chú ý trong các bộ dữ liệu lớn.
For example, Excel will remove leading Zeros of Numbers, change Date/Time Formats or uses the scientific number format for large Numbers and others.
This can go unnoticed in large data sets.

Để ngăn chặn Excel chuyển đổi dữ liệu, bạn phải thông báo Excel để nhập/lưu trữ dữ liệu ở định dạng văn bản.

Có hai cách để lưu trữ dữ liệu với loại văn bản trong phần gói bảng tính XLSX Excel!

1. Các chuỗi nội tuyến được lưu trữ bên trong phần gói bảng tính XML (tệp) & nbsp; & nbsp; & nbsp; & nbsp; • cung cấp để dễ dàng dịch/chuyển đổi & nbsp; & nbsp; & nbsp; & nbsp; • ;
    • Provided for ease of translation/conversion
    • Useful in XSLT scenarios
    • Excel and other consumers may convert to shared strings
    • to export the data programmatically into the worksheet

2 Mỗi chuỗi duy nhất được lưu trữ một lần (giảm kích thước tệp, hiệu suất được cải thiện) & nbsp; & nbsp; & nbsp; & nbsp; • Các ô lưu trữ chỉ mục dựa trên 0 của chuỗi
    • All worksheets points/links to the strings stored in the shared-strings package part
    • Each unique string is stored once (reduced file size, improved performance)
    • Cells store the 0-based index of the string

Cả hai phương pháp có thể được trộn/kết hợp

Tôi sẽ sử dụng phương pháp tiếp cận chuỗi nội tuyến ở đây trong giải pháp PowerShell của mình vì nó dễ tạo và bảo trì hơn.

Ví dụ về phần bảng tính XML Excel chỉ chứa nội dung nội dung, được định dạng là loại văn bản:

Tên Acrotray Tên





Name






acrotray






Name



Một hàng được đại diện là -Lement. Một tế bào được biểu diễn dưới dạng -element. Loại ô được định nghĩa bởi thuộc tính "T" ở đây là loại "inlinest" có nghĩa là một loại văn bản. Nếu ô có một loại "inlinest", nút phải chứa một nút. Đối với một chuỗi đơn giản (văn bản) mà không định dạng nút chứa một nút có giá trị của chuỗi.
A cell is represented as -Element. The type of the cell is defined by the "t" attribute here as type of "inlineStr" which means a type of text.
If the cell has a type of "inlineStr" the node must contain a node.
For a simple string (text) without formatting the node contains a node with the value of the string.

CẢNH BÁO: Theo mặc định, Excel sử dụng và lưu trữ các chuỗi vào phần gói XML được chia sẻ. Excel chuyển các chuỗi nội tuyến vào phần dây chia sẻ trên các hành động lưu! Vì vậy, sau khi Excel đã chuyển đổi dữ liệu thành các chuỗi được chia sẻ, dữ liệu không thể dễ dàng truy cập!
By default, Excel uses and stores strings into the shared-strings XML package part.
Excel transfers the inline strings into the shared-strings part on save actions!
So, after Excel has converted the data into shared strings, the data cannot easily be accessed!

Mã PowerShell

Có một số quy tắc vàng cho thiết kế mã. Hai trong số đó là: một chức năng phải luôn tập trung để chỉ giải quyết một nhiệm vụ và không phải là một con dao quân đội Thụy Sĩ. Một hàm và tập lệnh phải luôn luôn trả về các đối tượng được xác định rõ và có cấu trúc
Two of them are:
A Function should always be concentrated to solve only one task and not being a Swiss army knife.
A Function and scripts should always return well defined and structured Objects

Vì vậy, tôi đã chia mã PowerShell của mình thành một số chức năng.

Chức năng New-xlsxworkbook mới để tạo sổ làm việc excel .xlsx trống (gói XLSX) mới mà không có bảng tính
Function to create a new empty Excel .xlsx workbook (XLSX package) without a worksheet

Chức năng Add-xlsxworksheet để nối một bảng tính excel trống mới vào một sổ làm việc excel .xlsx hiện có
Function to append a new empty Excel worksheet to an existing Excel .xlsx workbook

Chức năng xuất khẩu Works
Function to fill an empty existing Excel worksheet with the string typed data

Các chức năng này chỉ được sử dụng nội bộ. Vì vậy, tốt nhất là ẩn các chức năng này. Để ẩn các chức năng, bạn có các tùy chọn này trong PowerShell & nbsp; & nbsp; & nbsp; & nbsp; • Các hàm của tổ bên trong các chức năng khác (trong trường hợp các chức năng nâng cao đặt nó bên trong khối bắt đầu) & nbsp; & nbsp; & nbsp; & nbsp; • khối của một tập lệnh nâng cao & nbsp; & nbsp; & nbsp; & nbsp; • Tạo một mô-đun và chỉ định các thành viên mô-đun công khai với cmdlet export-modulemember
To hide functions you have these options in PowerShell
    • nest functions inside other function (in case of advance functions put it inside the begin block)
    • nest functions inside the begin block of an advanced script
    • Create a module and specify the public module members with the Cmdlet Export-ModuleMember

Tôi không muốn buộc người dùng tập lệnh của mình nhập nó dưới dạng mô -đun. Trong thực tế là một tập lệnh PowerShell có thể nhìn và hoạt động như một chức năng, tôi đã quyết định làm tổ các chức năng bên trong khối bắt đầu của tập lệnh. Vì vậy, bạn có thể sử dụng tập lệnh này bằng cách gọi nó (theo đường dẫn của nó) và bằng cách sử dụng các tham số.
In the fact that a PowerShell script can look and behave like a function, I have decided to nest the functions inside the begin block of the script.
So you can use this script by simply calling it (by its path) and by use of the parameters.

Bạn có thể tải xuống mã đầy đủ trên kho lưu trữ mã Microsoft:

Links:


Office Mở liên kết định dạng XML:

Tiêu chuẩn ISO và IEC http://standards.iso.org/ittf/publiclyavailablestandards/index.html%20
http://standards.iso.org/ittf/PubliclyAvailableStandards/index.html%20

ECMA Standard 376 http://www.ecma-international.org/publications/standards/ecma-376.htm%20
http://www.ecma-international.org/publications/standards/Ecma-376.htm%20

Office Open XML Tìm hiểu tài nguyên:

Khám phá các định dạng XML mở văn phòng http://office.microsoft.com/en-us/training/office-open-xml-i- exploring-the-office-open-xml-formats-rz010243529.aspx?section=1% 20
http://office.microsoft.com/en-us/training/office-open-xml-i-exploring-the-office-open-xml-formats-RZ010243529.aspx?section=1%20

Chỉnh sửa tài liệu trong XML http://office.microsoft.com/en-us/training/open-xml-ii-editing-document-in-the-xml-rz010357030.aspx?ctt=1%20
http://office.microsoft.com/en-us/training/open-xml-ii-editing-documents-in-the-xml-RZ010357030.aspx?CTT=1%20

Mở tốt XML XLSX liên kết:

Đọc và ghi các tệp XML mở (MS Office 2007) http://www.developerfusion.com/article/6170/read-and-write-open-xml-files-ms-office-2007/
http://www.developerfusion.com/article/6170/read-and-write-open-xml-files-ms-office-2007/

Bảng tính hoặc xlsx http://officeopenxml.com/anatomyofooxml-xlsx.php%20
http://officeopenxml.com/anatomyofOOXML-xlsx.php%20

PowerShell và mô hình đối tượng Excel Com:

Đối với tài liệu của mô hình đối tượng Excel, hãy tìm kiếm mạng Microsoft Developer (MSDN) cho: "Tham chiếu mô hình đối tượng Excel" Excel 2003 và 2007: http: //msdn.microsoft.com/en-us/l Library/BB149081%28V=Office. 12%29.aspx Excel 2003 và 2007: http: //msdn.microsoft.com/en-us/l Library/wss56bz7%28v=vs.90 en-us/thư viện/văn phòng/ff194068.aspx
" Excel Object Model Reference"
Excel 2003 and 2007:http://msdn.microsoft.com/en-us/library/bb149081%28v=office.12%29.aspx
Excel 2003 and 2007:http://msdn.microsoft.com/en-Us/library/wss56bz7%28v=vs.90%29.aspx
Excel 2013: http://msdn.microsoft.com/en-us/library/office/ff194068.aspx

Loạt bài viết: Tích hợp Microsoft Excel với PowerShell của Jeffery Hicks: http://www.petri.co.il/export-to-excel-with-powershell.htm%20 http://www.petri.co.il/export -to-excel-with-powershell-part-2.htm%20 http://www.petri.co.il/export-to-excel-with-powershell-part-3.htm%20
http://www.petri.co.il/export-to-excel-with-powershell.htm%20
http://www.petri.co.il/export-to-excel-with-powershell-part-2.htm%20
http://www.petri.co.il/export-to-excel-with-powershell-part-3.htm%20

Làm cách nào để sử dụng Windows PowerShell để tự động hóa Microsoft Excel? Tác giả Ed Wilson: http://blogs.technet.com/b/heyscriptingguy/archive/2006/09/08/how-can-i-use-windows-powershell-to-automate-microsoft-excel.aspx
http://blogs.technet.com/b/heyscriptingguy/archive/2006/09/08/how-can-i-use-windows-powershell-to-automate-microsoft-excel.aspx

Tips:

WindowsBase.dll thậm chí có thể được sử dụng trong PowerShell 2.0 và 3.0 để tạo các tệp zip:

PowerShell-Zip & NBSP; & nbsp; http: //thewalkingdev.blogspot.de/2012/07/powershellzip.html%20
 http://thewalkingdev.blogspot.de/2012/07/powershellzip.html%20

Xem thêm

  • Cổng thông tin PowerShell
  • Wiki: Cổng thông tin Technet Wiki

Làm cách nào để tạo một bảng tính mà không có Excel?

Mở tài liệu Excel bằng Google Docs..
Mở trình duyệt của bạn ..
Truy cập Google Sheets hoặc theo liên kết ở trên ..
Nhấp vào dấu cộng (Bắt đầu một bảng tính mới) ..
Nhấn vào tệp.
Nhấn vào Mở.
Bạn có thể chọn một tệp từ ổ đĩa của mình hoặc bạn có thể nhấn vào tải lên trên mạng để truy cập các tệp từ máy tính của bạn ..

PowerShell có thể tạo tệp excel không?

Bạn có thể tạo một tệp Excel bằng PowerShell..

Tôi có thể sử dụng Excel mà không cần tải xuống không?

Microsoft có một số chương trình "Trình xem" có thể được tải xuống và sử dụng để xem các tệp Word, Excel và PowerPoint mà không cần cài đặt Microsoft Office trên máy tính.Liên kết để tải xuống từng ứng dụng Trình xem từ trang web của Microsoft được liệt kê bên dưới.. Links to download each viewer application from Microsoft's website are listed below.

PowerShell có thể tự động hóa Excel không?

Thay vào đó, sử dụng PowerShell để nhận (và đặt) các giá trị ô Excel, sử dụng màn hình mở rộng mở, bạn có thể chuyển đổi một sổ làm việc Excel thành một đối tượng PowerShell sau đó có thể được đọc và thao tác.using the Open-ExcelPackage cmdlet, you can “convert” an Excel workbook into a PowerShell object which can then be read and manipulated.