სიღრმისეული შესწავლა: გაფართოებული შაბლონები Aspose.Cells ღრუბლოვანი მართვის API-ით
თქვენ იცით, როგორ შექმნათ სამუშაო წიგნი, გადარქვით ფურცელს, და შეკუმშოთ ფაილი. მაგრამ
ManagementController‑ს აქვს უფრო მკვეთრი ინსტრუმენტები, რომლებიც ბრტყელად ხილულია — სამუშაო წიგნის სრულ სტრუქტურალურ JSON გამოტანა, შერეული უჯრედების შემოწმება, რევიზიის მიღება, და შაბლონზე დაფუძნებული შექმნის მოდელი, რომელიც სტილიზაციას ქმნის ერთ-სტრიქონიან საკითხად. აქ არის ადგილი, სადაც სახლის მოვლა აღარ არის “clicking around in Excel” და იწყება პროგრამული სამუშაო წიგნის ჰიგინეა.
ნაწილი 1-ში ჩვენ გავიცნეთ 15 საბოლოო წერტილი სუფთა გზამკვლევებით. ეს პოსტი განკუთვნილია იმ სიტუაციებისთვის, რომლებიც რეალურ სამუშაო გარემოში ნამდვილი პრობლემები ქმნიან:
- თქვენ უნდა გადამოწმოთ სამუშაო წიგნი მისი დამუშავებამდე — აქვს თუ არა პივოტის ცხრილები, დიაგრამები, შერწყმული რეგიონები, რომლებიც შეიძლება შეცდომას გამოიწვიონ თქვენს კოდში?
- თქვენ უნდა მიღოთ ტრეკირებული ცვლილებები ასობით ფაილზე, სანამ ისინი თქვენს არქივურ პაიპლაინში გადადის.
- თქვენ გსურთ შექმნათ შაბლონების სისტემა, სადაც სხვადასხვა ქირაობის მომხმარებლებს მიიღება განსხვავებული ბრენდირებული შედეგები სტილიზაციის კოდის დაწერის გარეშე.
- თქვენ უნდა განიხილოთ შერწყმული უჯრედის რეგიონები, რათა თავიდან აიცილოთ მონაცემების ჩაწერა მათში (ან რომ გაიგოთ სამუშაო წიგნის განლაგება, რომელსაც თქვენ არ შექმენით).
- თქვენ გსურთ შერლათ შექმნა → სტრუქტურირება → მოდიფიკაცია → შეკუმშვა ერთიან სამუშაო წიგნის ქარხანაში.
ქვემოთ მოცემული ყველა მაგალითი შესრულებადია. კოდი არის cURL-ში; იგივე გამოძახებები 1:1 მიბმულია .NET, Python და Java SDK-ებზე.
1. სამუშაო წიგნის სრული სტრუქტურის მიღება JSON ფორმატში
PUT /v4.0/cells/spreadsheet/structure (ლოკალური) და GET /v4.0/cells/{name}/structure (დისტანციური) აბრუნებს ერთიან JSON დოკუმენტს, რომელიც აღწერს ყველას, რაც ძრავა იცის სამუშაო წიგნის შესახებ: სამუშაო ფურცლები, ცხრილები, პივოტის ცხრილები, დიაგრამები, ფორმები, შერწყმული უჯრედის რეგიონები და სხვა.
ლოკალური
curl -X PUT "https://api.aspose.cloud/v4.0/cells/spreadsheet/structure" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: multipart/form-data" \
-F "file=@mystery_workbook.xlsx"
დისტანციური
curl -X GET "https://api.aspose.cloud/v4.0/cells/mystery_workbook.xlsx/structure?folder=uploads" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
რას მიიღებთ
{
"FileName": "mystery_workbook.xlsx",
"FileFormat": "Xlsx",
"Worksheets": [
{
"Name": "Sheet1",
"Type": "Worksheet",
"Tables": [{ "Name": "SalesData", "Range": "A1:D120" }],
"PivotTables": [{ "Name": "Pivot1", "Range": "F1:H20" }],
"Charts": [{ "Name": "Chart1", "Type": "Column" }],
"MergedCells": [
{ "StartRow": 0, "StartColumn": 0, "EndRow": 0, "EndColumn": 3 }
]
}
]
}
რატომ მნიშვნელოვანია
- წინასწარი გადამოწმება.
DataProcessingControllerიმპორტების გაშვებამდე სამუშაო წიგნაკზე, გამოიძახეთstructure, რათა გადამოწმოთ, რომ მიზნობრივი სამუშაო ფურცელი და ცხრილი ნამდვილად არსებობს. - განლაგების აღმოჩენა. მუშაობთ სამუშაო წიგნაკზე, რომელსაც თქვენ არ შექმენით?
structureგეტყვით ზუსტად, რა არის შიგნით, გადმოწერისა და Excel-ში ნახვის გარეშე. - UI-ის რენდერი. მართეთ სამუშაო ფურცლის / ცხრილის / გრაფიკის სელექტორი თქვენს აპლიკაციაში პირდაპირ
structureპასუხიდან.
2. შერწყმული უჯრედის რეგიონების შემოწმება
შერეული უჯრედები არის ელექტრონული ცხრილების ავტომატიზაციის ჩუმი მოკვლევები — შერეულ რეგიონალში დაწერა შეიძლება ჩუმად გადააწეროს მთელი ტერიტორია ან გამოიწვიოს კრიპტიკური შეცდომები. ManagementController აჩვენებს ორ endpoint-ს, რომლებსაც შეიძლება მოთხოვნა.
ლოკალური სამუშაო ფურცელი
curl -X PUT "https://api.aspose.cloud/v4.0/cells/spreadsheet/mergedcells?worksheet=Sheet1" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-F "file=@my_workbook.xlsx"
დისტანციური სამუშაო ფურცელი
curl -X GET "https://api.aspose.cloud/v4.0/cells/my_workbook.xlsx/worksheets/Sheet1/mergedcells?folder=uploads" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
პასუხი
[
{ "StartRow": 0, "StartColumn": 0, "EndRow": 0, "EndColumn": 3 },
{ "StartRow": 5, "StartColumn": 1, "EndRow": 7, "EndColumn": 1 }
]
თითოეული ჩანაწერი არის CellArea — მართკუთხედი რიგის/სვეტის კოორდინატებში. ზემოთ მოცემული პირველი რეგიოანი არის სათაური, რომელიც შერწყმულია A1–D1 შუალედში; მეორე არის ვერტიკალური შერწყმა B6–B8-ში.
გამოიყენეთ, რათა თავიდან აიცილოთ მიწის ღრუბლები
სამუშაო ფურცელში მონაცემების ჩაწერამდე (via CellsController ან DataProcessingController-ის იმპორტით), გამოიძახეთ ეს endpoint და გაფილტვრა ყველა startcell მნიშვნელობა, რომელიც მდებარეობს შერწყმული ფართობის შიგნით. ან, შებრუნებით, გამოიყენეთ შერწყმული რეგიონები, რათა აღმოაჩინოთ სათაურის რიგები და სექციის სათაურები პროგრამულად.
3. ცვლილებების (რევიზიების) მიღება
როცა თანამშრომლები Excel-ში ჩართავენ “Track Changes” ფუნქციას, ყველა რედაქტირება ხდება revision — მოლოდინში არსებული ცვლილება, რომელსაც აქვს ავტორი, დროის შტამპი და მიღება/უარყოფის მდგომარეობა. თუ თქვენი პაიპლೈನ್ იღებს ასეთი ფაილებს და საჭიროებს სუფთა, დასრულებულ ვერსიებს, თქვენ გაქვთ ორი არჩევანი:
- ლოკალური:
PUT /v4.0/cells/spreadsheet/accept-all-revisions - დისტანციური:
PUT /v4.0/cells/{name}/accept-all-revisions
ლოკალური
curl -X PUT "https://api.aspose.cloud/v4.0/cells/spreadsheet/accept-all-revisions" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-F "file=@collaborative_draft.xlsx" \
--output finalized.xlsx
დისტანციური
curl -X PUT "https://api.aspose.cloud/v4.0/cells/collaborative_draft.xlsx/accept-all-revisions?folder=drafts" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
--output finalized.xlsx
ამ გამოძახების შემდეგ, დოკუმენტი აღარ აჩვენებს ტრეკის-ცვლილებების მონიშვნებს. ყველა რედაქტირება შერწყმულია, როგორც თუ ისინი პირდაპირ საბოლოო ვერსიაში აკრეფილი იყვნენ.
მასობრივი სამუშაო ნაკადი
შეაერთეთ თქვენი საცავის პროვაიდერის ფაილების ჩამონათვლის API-ებთან, რათა დამუშავოთ ყველა ფაილი საქაღალდეში:
for name in $(list_files_in drafts/); do
curl -X PUT "https://api.aspose.cloud/v4.0/cells/$name/accept-all-revisions?folder=drafts" \
-H "Authorization: Bearer $TOKEN"
done
(რეალურ პროდუქციის კოდში უნდა იყენებოდეს SDK და პარალელიზაცია async/await-ით — REST-ზარი იდენტურია.)
4. შაბლონზე-დამყარებული შექმნა მასშტაბში
template პარამეტრი spreadsheet/create-ზე უფრო მეტი, ვიდრე მხოლოდ მოხერხებულობა — ის არის ტემპლატიზაციის სისტემის საფუძველი. სერვერი იტვირთება შაბლონის სამუშაო წიგნაკს, ასლი იღებს მისი თემას, სტილებს, სახელით განსაზღვრულ დიაპაზონებს და ნებისმიერი წინასწარ ფორმატირებულ ცხრილებს, და აბრუნებს ახალ სამუშაო წიგნაკს, რომელსაც შეგიძლიათ დაუყოვნებლივ დატენოთ მონაცემებით DataProcessingController/import/data-ის საშუალებით.
ნიმუში: თითოეული ქირაობისთვის ერთი შაბლონი
შაბლონების შენახვა ღრუბლოვან შენახვაში ქირაობის გასაღებით მითითებულ ბილიკზე:
templates/tenant_acme/invoice.xlsx
templates/tenant_globex/invoice.xlsx
templates/tenant_initech/invoice.xlsx
რენტის სისტემის მიერ ინვოისის შექმნისას:
# 1) Create from tenant template
curl -X PUT "https://api.aspose.cloud/v4.0/cells/spreadsheet/create\
?format=xlsx\
&template=templates/tenant_acme/invoice.xlsx" \
-H "Authorization: Bearer $TOKEN" \
--output blank_acme.xlsx
# 2) Hydrate with this invoice's line items
curl -X PUT "https://api.aspose.cloud/v4.0/cells/import/data/json\
?worksheet=Items\
&startcell=A10\
&insert=true" \
-H "Authorization: Bearer $TOKEN" \
-F "file=@blank_acme.xlsx" \
-F "file=@line_items.json" \
--output invoice_ACME_2026_09_001.xlsx
თითოეულ ქირაობის მომხმარებელს მიიღება პიქსელ-დამახასიათებელი შედეგი თავისი ბრენდის მიხედვით — ნული სტილიზაციის ლოგიკა თქვენს კოდში.
ნიმუში: ანგარიშის ფაბრიკა
ღამით შესრულებული სამუშაო უნდა შექმნას 30 რეგიონული ანგარიში, ყველა ერთნაირი განლაგებით, თუმცა განსხვავებული მონაცემებით:
for region in north south east west ...; do
create(template=regional_template.xlsx) |
import(data=region_$region.csv, worksheet=Data, startcell=A2) |
compress(level=6) |
save("reports/2026/09/$region.xlsx")
done
თითოეული პიპის ეტაპი არის ერთი API გამოძახება. მთელი ქარხანა შედის შელის ციკლში.
5. შეკუმშვა მიზნის მიხედვით
PUT /v4.0/cells/spreadsheet/compress?level=N იღებს ნებისმიერი დონეს 0‑დან 9‑მდე. სწორი დონის არჩევა პატარა გადაწყვეტილებაა, რომელიც downstream ეფექტებს იწვევს.
| დონე | ტიპიკური გამოყენების შემთხვევა |
|---|---|
| 0 | გამართვა — სამუშაო წიგნის გამოტანა მთლიანად შეკუმშვის გარეშე |
| 1–3 | დაახლოებით რეალურ დროში პაიპლაინები, სადაც CPU-ის ღირებულება უფრო მნიშვნელოვანია, ვიდრე ზომა |
| 4–6 | ნაგულისხმევი რეკომენდაცია. კარგი შეკუმშვა საშუალო CPU-სთვის |
| 7–9 | არქივირება, ელ‑ფოსტის დანართები, მიწოდებები — ზომა უფრო მნიშვნელოვანია, ვიდრე სიჩქარე |
30 მბ-ის XLSX-ზე level-6 შეკუმშვა ჩვეულებრივ 8–12 მბ-ის შუალედშია. Level 9 ხშირად კიდევ 10–15% სიწმინდის, დაახლოებით ორჯერ მეტი CPU ღირებულებით. უმეტეს აპლიკაციებისთვის level=6 არის საუკეთესო არჩევანი.
6. შეკეთება: რა აკეთებს რეალურად
PUT /v4.0/cells/spreadsheet/repair განაპიროვნებით მარტივი — პარამეტრები არ არსებობს, კონფიგურაცია არ არსებობს. შიდა დონეზე იგი:
- ანალიზებს სამუშაო წიგნაკს ძრავის მკაცრ მკითხველის საშუალებით.
- მოიცილებს სტრუქტურული არასწორ ნაწილებს (მიტოვებული ურთიერთობები, დაზიანებული XML, არასწორი უჯრედის ბმულები).
- თავიდან სერიალიზდება ახალი XLSX კონტეინერში.
შედეგი არის ფაილი, რომელიც Excel-ში სუფთა გახსნილია. რას ვერ შეუძლია გასწორება: მონაცემთა-დონის დაზიანება (უჯრედი, რომლის მნიშვნელობა #REF! არის, რადგან ფორმულა დაზიანებულია), დაკარგული სურათები (თუ სურათის ნაკადი თვითონ დაზიანებულია), ან დაკარგული VBA მაკროები (თუ vbaProject.bin-ი არ არის წაკითხვადი). თუმცა 80% შემთხვევისთვის — “Excel ამბობს, რომ ეს ფაილი დაზიანებულია და გთავაზობთ მისი შეკეთებას” — ეს endpoint აკეთებს იგივე შეკეთებას, სერვერის მხარეს, GUI-ის გარეშე.
რეპარაციის გაშვების დრო
- შემოტანისას. თუ თქვენი აპლიკაცია იღებს მომხმარებლის ატვირთულ ფაილებს, გაუშვით
repairსხვა ნებისმიერი დამუშავებამდე. ღირებულება არის ერთი დამატებითი გამოძახება, თუმცა იგი თავიდან აცილებს ქასკადენციურ შეცდომებს პაიპლაინის შემდეგ. - ექსპორტის შეცდომებზე. თუ ქვედა კონვერსია (
ConversionController) იშლება კრიპტიკური შეცდომით, პირველ რიგში გაუშვითrepair, შემდეგ თავიდან სცადეთ კონვერსია.
7. ინტეგრაციის ნიმუშები
ნიმუში: სამუშაო წიგნის ფაბრიკა
შეაერთეთ ManagementController-ის ყველა შესაძლებლობა თქვენს აპლიკაციაში ერთ ფაბრიკის საბოლოო წერტილში:
POST /api/reports/{tenantId}
1. Create from template: templates/{tenantId}/report.xlsx
2. Import data into the "Data" sheet starting at A2
3. Rename "Sheet1" → "Cover"
4. Accept all revisions (in case template had tracked changes)
5. Compress level 6
6. Return final XLSX
თითოეული ნაბიჯი არის ერთი API გამოძახება ManagementController ან DataProcessingController. თქვენი endpoint არის თხელი ორგანიზატორი.
ნიმუში: audit-before-process
რეზურსის-დამაკარგავი უჯრედ-დონის ოპერაციებზე დაწყებამდე:
[1] GET {name}/structure # understand what's inside
[2] GET {name}/worksheets/X/mergedcells # know where NOT to write
[3] DataProcessing/... # run the real work
ორივე შემოწმების გამოძახება თითქმის არ ღირს, თუმცა ისინი აცილებენ ძნელად გასამართი შეცდომებს, რომლებიც წარმოქმნდება შერწყმული რეგიონებში ჩაწერის ან არარსებული ცხრილების მიზნადაყენებისას.
8. შესრულების საკითხები
structureიაფია. იგი გადის მეტამონაცემებზე, არა უჯრედის შიგთავსზე. უსაფრთხოა დიდი სამუშაო წიგნებისგან გამოძახება.mergedcellsიაფია. იგივე მიზეზით.compressCPU-ზე დამოკიდებულია. უფრო მაღალი დონეები უფრო ძვირია. გამოიყენეთ დონე 6 როგორც ნაგულისხმევი, თუ არ გაქვთ მიზეზი უფრო მაღალ დონეზე გასაყვანად.repairსრულად გადამუშავებულია. უფრო ძვირია, ვიდრეcompress. გაუშვით იგი შეყვანისას, არა ყოველ მოთხოვნაზე.accept-all-revisionsმასშტაბირდება ვერსიების რაოდენობით. ასობით ვერსია ერთ ფაილში კარგად მუშაობს; ათასობით კი გარკვეული დროით.- დისტანციური ვარიანტები აძლიერებს ადგილობრივ რაუნდ‑ტრიპებს. როდესაც ფაილები უკვე ღრუბლოვან შენახვაში არიან,
GET {name}/structureაცილებს ფაილის თქვენს მანქანაზე ჩამოტვირთვას, მხოლოდ მისი შემოწმებისთვის.
9. საერთო პრობლემების გადაჭრა
| სიმპტომი | მიზეზი | გადაწყვეტა |
|---|---|---|
400 on add/worksheet |
ფურცლის სახელი უკვე არსებობს ან ცარიელია | აირჩიეთ უნიკალური სახელი, ან დატოვეთ სერვერს ავტომატურად მინიჭება |
400 on rename/worksheet |
sourceName არ ემთხვევა არც ერთ არსებულ ფურცელს |
სახელები რეგისტრში მგრძნობიარეა; პირველ რიგში გამოძახეთ worksheets მათი სიისთვის |
500 on compress with level=10 |
დონე უნდა იყოს 0–9 | მაქსიმალურ შეკუმშვისთვის გამოიყენეთ level=9 |
repair returns a file that still won’t open |
კორუპცია იმყოფება გამოსახულების/VBA ნაკადში, არა სტრუქტურული XML-ში | repair-ის არ შეუძლია მონაცემის-დონის კორუპციის გასწორება; მომხმარებლიდან მოითხოვეთ სუფთა ექსპორტი |
structure returns empty Worksheets array |
ატვირთული ფაილი სულაც არ არის სწორი სამუშაო წიგნი | შეამოწმეთ ფაილის გაფართოება და შინაარსი; პირველ რიგში გაუშვით repair |
accept-all-revisions is a no-op |
სამუშაო წიგნში ტრეკინგი არ არის ჩართული | ეს კარგადაა — რევიზიების არ არსებობა ნიშნავს, რომ დასამტკიცებელი არაფერია |
mergedcells returns empty array |
ფურცლში შერწყმული რეგიონები არ არსებობს | გამოიყენეთ ეს სიგნალი უსაფრთხოდ ნებისმიერი ადგილას ჩაწერისთვის |
10. ყველაფრის შეჯამება
ManagementController endpoint-ები ინდივიდუალურად პატარაა. მათი ძალა შედგენიდან მოდის:
- შექმნა სამუშაო წიგნი შაბლონიდან → იმპორტირება მონაცემები via
DataProcessingController→ სახელის გადარქმევა ფურცლები → შეკუმშვა → მიწოდება. ეს სრულყოფილი SaaS ანგარიშის პაიპლაინია ხუთ HTTP მოთხოვნის მიხედვით. - სტრუქტურა + mergedcells + უჯრედები → ინსპექციის ფენა, რომელიც იცის ნებისმიერი სამუშაო წიგნი, რომელიც მას აყენებთ, Excel-ის გარეშე.
- გასწორება შეყვანისას → accept-all-revisions → თქვენი პაიპლაინის დარჩენილი ნაწილი ყოველთვის ხედავს სუფთა, დასრულებულ სამუშაო წიგნებს.
სერვერის ფარმის საჭიროება არ გაქვთ. Excel-ის დაყენება არ გჭირდებათ. თქვენ გჭირდებათ curl და გეგმა.