Computer >> कंप्यूटर >  >> सॉफ्टवेयर >> Office

पावरशेल के साथ एक्सेल फाइल में डेटा पढ़ें और लिखें

इस लेख में हम दिखाएंगे कि एक्सेल वर्कशीट से सीधे पावरशेल स्क्रिप्ट से डेटा कैसे पढ़ना और लिखना है। आप एक्सेल का उपयोग पावरशेल के साथ कंप्यूटर, सर्वर, इंफ्रास्ट्रक्चर, एक्टिव डायरेक्ट्री आदि पर विभिन्न रिपोर्ट्स को इन्वेंटरी बनाने और जेनरेट करने के लिए कर सकते हैं।

आप एक अलग COM ऑब्जेक्ट (घटक ऑब्जेक्ट मॉडल) के माध्यम से PowerShell से एक्सेल शीट तक पहुंच सकते हैं। इसके लिए कंप्यूटर पर एक्सेल का इंस्टाल होना जरूरी है।

एक्सेल सेल में डेटा एक्सेस करने का तरीका दिखाने से पहले, एक्सेल फाइल में प्रेजेंटेशन लेयर्स के आर्किटेक्चर को समझना जरूरी है। नीचे दिया गया आंकड़ा एक्सेल ऑब्जेक्ट मॉडल में 4 नेस्टेड प्रेजेंटेशन लेयर दिखाता है:

  • अनुप्रयोग परत - चल रहे एक्सेल ऐप से संबंधित है;
  • कार्यपुस्तिका परत - एकाधिक कार्यपुस्तिकाएं (एक्सेल फ़ाइलें) एक ही समय में खुली हो सकती हैं;
  • कार्यपत्रक परत - प्रत्येक XLSX फ़ाइल में कई पत्रक हो सकते हैं;
  • श्रेणी परत - यहां आप विशिष्ट सेल या सेल रेंज में डेटा एक्सेस कर सकते हैं।

पावरशेल के साथ एक्सेल फाइल में डेटा पढ़ें और लिखें

PowerShell का उपयोग करके Excel स्प्रेडशीट से डेटा कैसे पढ़ें?

आइए कर्मचारियों की सूची वाली एक्सेल फ़ाइल में डेटा एक्सेस करने के लिए पावरशेल का उपयोग करने का एक सरल उदाहरण देखें।

पावरशेल के साथ एक्सेल फाइल में डेटा पढ़ें और लिखें

सबसे पहले, COM ऑब्जेक्ट का उपयोग करके अपने कंप्यूटर पर एक्सेल ऐप (एप्लिकेशन लेयर) चलाएं:
$ExcelObj = New-Object -comobject Excel.Application

कमांड चलाने के बाद आपके कंप्यूटर पर बैकग्राउंड में एक्सेल लॉन्च हो जाएगा। एक्सेल विंडो दिखाने के लिए, दृश्यमान . बदलें COM ऑब्जेक्ट की संपत्ति:

$ExcelObj.visible=$true

आप सभी एक्सेल ऑब्जेक्ट गुणों को निम्नानुसार प्रदर्शित कर सकते हैं:

$ExcelObj| fl

तब आप एक एक्सेल फ़ाइल (एक कार्यपुस्तिका) खोल सकते हैं:

$ExcelWorkBook = $ExcelObj.Workbooks.Open("C:\PS\corp_ad_users.xlsx")

प्रत्येक एक्सेल फ़ाइल में कई कार्यपत्रक हो सकते हैं। आइए वर्तमान एक्सेल कार्यपुस्तिका में कार्यपत्रकों की सूची प्रदर्शित करें:

$ExcelWorkBook.Sheets| fl Name, index

पावरशेल के साथ एक्सेल फाइल में डेटा पढ़ें और लिखें

फिर आप एक शीट खोल सकते हैं जो आप चाहते हैं (उसके नाम या अनुक्रमणिका द्वारा):

$ExcelWorkSheet = $ExcelWorkBook.Sheets.Item("CORP_users")

आप इस कमांड का उपयोग करके वर्तमान (सक्रिय) एक्सेल वर्कशीट का नाम प्राप्त कर सकते हैं:

$ExcelWorkBook.ActiveSheet | fl Name, Index

पावरशेल के साथ एक्सेल फाइल में डेटा पढ़ें और लिखें

फिर आप एक्सेल वर्कशीट में सेल्स से वैल्यू प्राप्त कर सकते हैं। आप वर्तमान एक्सेल वर्कशीट पर सेल वैल्यू प्राप्त करने के लिए विभिन्न विधियों का उपयोग कर सकते हैं:एक श्रेणी, एक सेल, एक कॉलम या एक पंक्ति का उपयोग करना। नीचे उसी सेल से डेटा कैसे प्राप्त करें इसके उदाहरण देखें:

$ExcelWorkSheet.Range("B4").Text
$ExcelWorkSheet.Range("B4:B4").Text
$ExcelWorkSheet.Range("B4","B4").Text
$ExcelWorkSheet.cells.Item(4, 2).text
$ExcelWorkSheet.cells.Item(4, 2).value2
$ExcelWorkSheet.Columns.Item(2).Rows.Item(4).Text
$ExcelWorkSheet.Rows.Item(4).Columns.Item(2).Text

पावरशेल के साथ एक्सेल फाइल में डेटा पढ़ें और लिखें

सक्रिय निर्देशिका उपयोगकर्ता जानकारी को PowerShell का उपयोग करके Excel स्प्रेडशीट में निर्यात करना

आइए एक व्यावहारिक उदाहरण देखें कि पावरशेल से एक्सेल डेटा कैसे एक्सेस किया जाए। मान लीजिए, हम एक्सेल फ़ाइल में प्रत्येक उपयोगकर्ता के लिए सक्रिय निर्देशिका से कुछ जानकारी प्राप्त करना चाहते हैं। उदाहरण के लिए, उनका फोन नंबर (टेलीफोन नंबर विशेषता), विभाग और ई-मेल पता।

AD उपयोगकर्ता विशेषताओं के बारे में जानकारी प्राप्त करने के लिए, हम PowerShell Active Directory मॉड्यूल से Get-ADUser cmdlet का उपयोग करेंगे।

# Importing Active Directory module into PowerShell session
import-module activedirectory
# Open an Excel workbook first:
$ExcelObj = New-Object -comobject Excel.Application
$ExcelWorkBook = $ExcelObj.Workbooks.Open("C:\PS\corp_ad_users.xlsx")
$ExcelWorkSheet = $ExcelWorkBook.Sheets.Item("CORP_Users")
# Get the number of filled in rows in the XLSX worksheet
$rowcount=$ExcelWorkSheet.UsedRange.Rows.Count
# Loop through all rows in Column 1 starting from Row 2 (these cells contain the domain usernames)
for($i=2;$i -le $rowcount;$i++){
$ADusername=$ExcelWorkSheet.Columns.Item(1).Rows.Item($i).Text
# Get the values of user attributes in AD
$ADuserProp = Get-ADUser $ADusername -properties telephoneNumber,department,mail|select-object name,telephoneNumber,department,mail
# Fill in the cells with the data received from AD
$ExcelWorkSheet.Columns.Item(4).Rows.Item($i) = $ADuserProp.telephoneNumber
$ExcelWorkSheet.Columns.Item(5).Rows.Item($i) = $ADuserProp.department
$ExcelWorkSheet.Columns.Item(6).Rows.Item($i) = $ADuserProp.mail
}
# Save the XLS file and close Excel
$ExcelWorkBook.Save()
$ExcelWorkBook.close($true)

परिणामस्वरूप, Excel फ़ाइल में प्रत्येक उपयोगकर्ता के लिए AD जानकारी वाले कॉलम जोड़े गए हैं।

पावरशेल के साथ एक्सेल फाइल में डेटा पढ़ें और लिखें

आइए पावरशेल और एक्सेल का उपयोग करके रिपोर्ट बनाने के एक और उदाहरण पर विचार करें। मान लीजिए, आप सभी डोमेन सर्वर पर प्रिंट स्पूलर सेवा स्थिति के बारे में एक एक्सेल रिपोर्ट बनाना चाहते हैं।

आप सक्रिय निर्देशिका में सर्वर की सूची प्राप्त करने के लिए Get-ADComputer cmdlet का उपयोग कर सकते हैं, और सर्वर पर किसी सेवा की स्थिति को दूरस्थ रूप से जांचने के लिए WinRM Invoke-Command cmdlet का उपयोग कर सकते हैं।

# Create an Excel object
$ExcelObj = New-Object -comobject Excel.Application
$ExcelObj.Visible = $true
# Add a workbook
$ExcelWorkBook = $ExcelObj.Workbooks.Add()
$ExcelWorkSheet = $ExcelWorkBook.Worksheets.Item(1)
# Rename a worksheet
$ExcelWorkSheet.Name = 'Spooler Service Status'
# Fill in the head of the table
$ExcelWorkSheet.Cells.Item(1,1) = 'Server Name'
$ExcelWorkSheet.Cells.Item(1,2) = 'Service Name'
$ExcelWorkSheet.Cells.Item(1,3) = 'Service Status'
# Make the table head bold, set the font size and the column width
$ExcelWorkSheet.Rows.Item(1).Font.Bold = $true
$ExcelWorkSheet.Rows.Item(1).Font.size=15
$ExcelWorkSheet.Columns.Item(1).ColumnWidth=28
$ExcelWorkSheet.Columns.Item(2).ColumnWidth=28
$ExcelWorkSheet.Columns.Item(3).ColumnWidth=28
# Get the list of all Windows Servers in the domain
$computers = (Get-ADComputer -Filter 'operatingsystem -like "*Windows server*" -and enabled -eq "true"').Name
$counter=2
# Connect to each computer and get the service status
foreach ($computer in $computers) {
$result = Invoke-Command -Computername $computer –ScriptBlock { Get-Service spooler | select Name, status }
# Fill in Excel cells with the data obtained from the server
$ExcelWorkSheet.Columns.Item(1).Rows.Item($counter) = $result.PSComputerName
$ExcelWorkSheet.Columns.Item(2).Rows.Item($counter) = $result.Name
$ExcelWorkSheet.Columns.Item(3).Rows.Item($counter) = $result.Status
$counter++
}
# Save the report and close Excel:
$ExcelWorkBook.SaveAs('C:\ps\Server_report.xlsx')
$ExcelWorkBook.close($true)

आप विभिन्न परिदृश्यों में एक्सेल तक पहुँचने के लिए पॉवरशेल का उपयोग कर सकते हैं। उदाहरण के लिए, आप एक्सेल से एडी डेटा अपडेट करने के लिए आसान सक्रिय निर्देशिका रिपोर्ट बना सकते हैं या पावरशेल स्क्रिप्ट बना सकते हैं।

उदाहरण के लिए, आप अपने मानव संसाधन विभाग के एक कर्मचारी को उपयोगकर्ता रजिस्टर को एक्सेल में रखने के लिए कह सकते हैं। फिर PowerShell स्क्रिप्ट और Set-ADUser . का उपयोग करके cmdlet, कर्मचारी स्वचालित रूप से AD में उपयोगकर्ता जानकारी अपडेट कर सकता है (बस कर्मचारी को AD उपयोगकर्ता विशेषताओं को बदलने की अनुमतियाँ सौंपें और दिखाएं कि PowerShell स्क्रिप्ट को कैसे चलाया जाए)। इस प्रकार आप प्रासंगिक फोन नंबर, नौकरी के शीर्षक और विभागों के साथ एक अप-टू-डेट पता पुस्तिका रख सकते हैं।


  1. एक्सेल में CSV फ़ाइल कैसे पढ़ें (4 सबसे तेज़ तरीके)

    एक्सेल में काम करते समय, आपको अक्सर CSV . से निपटने की आवश्यकता हो सकती है फ़ाइल। यह एक्सेल में कॉलम रखने के साथ एक CSV फ़ाइल खोलना . हो सकता है , एक CSV . को रूपांतरित करना एक एक्सेल फ़ाइल में फ़ाइल, कनेक्शन बनाना, या कुछ और। हालांकि, CSV . को पढ़ना या खोलना इस प्रकार की फ़ाइल में टेक्स्ट-आधारित

  1. एक्सेल फाइल को एक्सएमएल डाटा मैपिंग के रूप में कैसे सेव करें (आसान चरणों के साथ)

    यदि आप एक्सेल को इस रूप में कैसे सहेजना चाहते हैं . खोज रहे हैं एक्सएमएल डेटा मानचित्रण , तब आप सही स्थान पर हैं। एक्सएमएल एक मार्कअप भाषा है जो HTML . के समान कार्य करती है . एक्सएमएल डेटा को स्टोर और ट्रांसपोर्ट करने के लिए डिज़ाइन किया गया है। XML . में डेटा स्टोर करने के लिए एक्सेल का उपयोग

  1. सीएसवी फाइल को एक्सेल में फॉर्मेट करना (2 उदाहरणों के साथ)

    जब हम नाम, पते या किसी उत्पाद जानकारी जैसी सूचनाओं के साथ काम कर रहे होते हैं, तो हम कभी-कभी उन्हें टेक्स्ट फ़ाइल के रूप में रखते हैं। इस प्रकार की टेक्स्ट फ़ाइल को CSV फ़ाइल कहा जाता है। लेकिन हमें इन सीएसवी फाइलों को अधिक सटीक रखने के लिए एक्सेल में आयात करने के लिए प्रारूपित करने की आवश्यकता हो स