Találd meg, javítsd, ellenőrizd: Teljes útmutató az Aspose.Cells Cloud Keresés, csere és hibás hivatkozás API-hoz (.NET / Python / Java / cURL)

“Melyik a 400 költségvetési munkafüzetünk közül még mindig azt írja, hogy Old Vendor Ltd?” “Cserélje le minden {{COMPANY}} helyőrzőt ebben a sablonban.” “Van még valamelyik jelentésünkben hivatkozás arra a domainre, amelyet tavaly megszüntettünk?” — három nagyon különböző kérdés, egy közös válasz: egy REST hívás, amely felhőben olvassa és felülírja a táblázatokat, anélkül, hogy bárhol is telepítve lenne az Excel.

A táblázat tartalom problémák szinte minden adatintenzív kódbázisban megjelennek:

  • Content audit — minden cellát, alakzatot vagy hiperhivatkozást keresve, amely elavult terméknevet, régi irodacímet vagy elavult jogi entitást említ;
  • Template rendering — a {{PLACEHOLDER}} tokenek kitöltése a táblázatokban, mielőtt a munkafüzetet elküldenénk az ügyfélnek;
  • Link rot — annak ellenőrzése, hogy a munkafüzetbe beágyazott URL-ek még mindig feloldódnak-e, mielőtt egy megfelelőségi vagy archiválási feladat jóváhagyja;
  • Bulk correction — egy elütés vagy helytelenül írt oszlopérték javítása több tucat táblázatban, vagy csak egy táblázat egy régiójára korlátozva.

A hagyományos lehetőségek — egy saját gépen futó szkriptkönyvtár, egy Excel makró vagy egy COM komponens egy Windows szerveren — mind azt jelentik, hogy te vagy az, aki a táblázatkezelő logikát hosztolja és méretezi. Aspose.Cells Cloud egyszerű REST-re alakítja: küldj egy fájlt (vagy csak egy fájlnevet), kapj egyezéseket — vagy egy javított fájlt — vissza.

Ez a bejegyzés végigvezet a core SearchController által kiexponált API-ken az Aspose.Cells Cloud mikroservice-ben (forrás: src/Aspose.Cells.Cloud.MicroService/Controllers/SearchController.cs), futtatható példákkal cURL és C# (.NET) nyelven, valamint megjegyzésekkel Python és Java felhasználók számára.

1. Mit tud a SearchController?

SearchController lefedi a három képességcsaládot, amelyek mindegyike több hatókörben érhető el:

Család Mit csinál Módosítja a munkafüzetet?
Search Visszaadja a lekérdezésnek megfelelő szövegelemeket — a munkalappal és a cella/forma/hyperlink pozícióval együtt Nem
Replace Kicseréli a megtalált szöveget, majd vagy visszaadja a javított fájlt streamként, vagy elmenti a felhő tárolóba Igen
Broken links Érvényesíti a munkafüzetben található minden http(s) hiperlinket, és visszaadja azokat, amelyek nem oldhatók fel Nem

És minden család négy hatókör-ben van kitéve, ami a végpontlista hosszát eredményezi:

Hatókör Keresés Csere Törött hivatkozások
Helyi fájl → online feldolgozás (feltöltés a kérés törzsében) PUT /v4.0/cells/search/content PUT /v4.0/cells/replace/content PUT /v4.0/cells/search/broken-links
Teljes munkafüzet a felhő tárolóban PUT /v4.0/cells/{name}/search/content PUT /v4.0/cells/{name}/replace/content PUT /v4.0/cells/{name}/search/broken-links
Egyetlen munkalap a felhő tárolóban PUT /v4.0/cells/{name}/worksheets/{worksheet}/search/content PUT /v4.0/cells/{name}/worksheets/{worksheet}/replace/content PUT /v4.0/cells/{name}/worksheets/{worksheet}/search/broken-links
Egyetlen tartomány a felhő tárolóban PUT /v4.0/cells/{name}/worksheets/{worksheet}/ranges/{cellArea}/search/content PUT /v4.0/cells/{name}/worksheets/{worksheet}/ranges/{cellArea}/replace/content PUT /v4.0/cells/{name}/worksheets/{worksheet}/ranges/{cellArea}/search/broken-links

Két további bónusz végpont, amely minden szövegelem kiír egy munkafüzetben — lásd a §4 részt:

Cél Végpont
A felhőben lévő fájl összes szöveges eleme PUT /v4.0/cells/{name}/search/content/all-textitems
A helyi feltöltés összes szöveges eleme PUT /v4.0/cells/search/content/all-textitems

Implementációs megjegyzés: az útvonalak előtagja a v{version:apiVersion}/cells és ez a vezérlő [ApiVersion("4.0")], így az élő hívások így néznek ki: https://api.aspose.cloud/v4.0/cells/.... Ennek a vezérlőnek minden művelete PUT — még a csak olvasásra szolgáló keresések is — mivel a keresés úgy van modellezve, mint egy erőforrással szemben benyújtott művelet, nem pedig egy gyorsítótárazható GET.

A két működési mód, és miért fontosak

A vezérlő díszítője minden műveletet ellát, és a díszítő pontosan megmondja, honnan származik a fájl:

  • [OnlineOperation] — állapot nélküli. A munkafüzetet a kérés törzsében (multipart) töltöd fel, a szerver memóriában dolgozza fel, és semmi nem kerül tárolásra a felhőben. Tökéletes a “csak mondd meg, mi van ebben a fájlban” feladatra, valamint egy alkalmas sablonosításhoz.
  • [CloudFileOperation] — tároláson alapuló. A szerver a {name}-t a felhő tárolóból (opcionálisan a folder= alatt) lekéri, elvégzi a feladatot, és — a helyettesítési műveleteknél — az eredményt közvetlenül visszaírja. Semmi sem kerül a gépedre.

Ez az egyetlen különbség, valamint a {worksheet} / {cellArea} útvonal szegmensek, alkotják a teljes mentális modellt. A bejegyzés többi része csak a részletek.

2. A válaszmodellek, amelyeket ténylegesen feldolgozni fogsz

Mindkét keresési család egy kis, lapos, könnyen köthető alakzatot ad vissza. A keresés SearchResponse‑t ad vissza:

{
  "Code": 200,
  "Status": "OK",
  "TextItems": [
    {
      "Filename": "Book1.xlsx",
      "Worksheet": "Q3 Forecast",
      "Position": "Cell:B7",
      "Content": "Old Vendor Ltd"
    },
    {
      "Filename": "Book1.xlsx",
      "Worksheet": "Q3 Forecast",
      "Position": "Shape:TextBox 3",
      "Content": "Prepared by Old Vendor Ltd"
    }
  ]
}

A törött hivatkozás keresés visszaadja a BrokenLinksResponse:

{
  "Code": 200,
  "Status": "OK",
  "BrokenLinks": [
    {
      "Filename": "Book1.xlsx",
      "Worksheet": "Links",
      "Position": "Hyperlink:Sheet1!B4",
      "LinkAddress": "https://retired-domain.example.com/report"
    }
  ]
}

Két dologra érdemes azonnal felhívni a figyelmet:

  1. Position egy címkézett hely, nem csak egy cellacím. Cell:, Hyperlink: vagy Shape: előtaggal rendelkezik, ami lehetővé teszi, hogy egy egyszerű lapos lista megmondja, milyen típusú elem egyezett. Ez a címke a különbség a “fix cell B7” és a “fix the text box sitting over B7” között.

  2. Mindkét modell önmagát leíró a jelentéskészítéshez — Filename és Worksheet minden elemnél visszaadódik, így a sok munkafüzet átvizsgálása egy audit táblába fűzhető össze utófeldolgozás nélkül.

3. Két dolog, amire szükséged van, mielőtt elkezdenél

  1. Regisztráljon egy ingyenes fiókot az Aspose Cloud Dashboard oldalon, és hozzon létre egy alkalmazást a Client ID és Client Secret megszerzéséhez (az SDK-k automatikusan cserélik ezeket JWT-re – nincs szükség saját auth fejlécek építésére).
  2. Telepítse az SDK-t a választott nyelvéhez:
<!-- .NET -->
<PackageReference Include="Aspose.Cells-Cloud" Version="25.x" />
# Python
pip install asposecellscloud
<!-- Java (Maven) — note: NOT on Maven Central, so the Aspose repo below is required -->
<repositories>
    <repository>
        <id>AsposeJavaAPI</id>
        <name>Aspose Java API</name>
        <url>https://repository.aspose.cloud/repo/</url>
    </repository>
</repositories>

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-cells-cloud</artifactId>
    <version>26.8</version>
</dependency>

Nem szükséges SDK? Minden egyszerű REST, így a cURL is ugyanolyan jól működik (lásd alább). A keresés/csere/hibás hivatkozás család is elérhető típusos SDK kérésmodelleken keresztül — SearchSpreadsheetContentRequest, ReplaceContentInRemoteRangeRequest és társai — ami a lenti C# példakódrészletekben van használva.

4. Forgatókönyv A: Helyi fájl keresése online (semmi nem tárolódik)

Ez a PUT /v4.0/cells/search/content — töltsd fel a munkafüzetet, és kapd vissza a találatokat. Nincs felhő tárolás, nincs takarítás, nincs másolat hátra.

① cURL

# 1) First, get a token
curl -X POST "https://api.aspose.cloud/connect/token" \
  -d "grant_type=client_credentials" \
  -d "client_id=YOUR_CLIENT_ID" \
  -d "client_secret=YOUR_CLIENT_SECRET"

# 2) Find "Old Vendor Ltd" anywhere in a local workbook
curl -X PUT "https://api.aspose.cloud/v4.0/cells/search/content" \
  -H "Authorization: Bearer $TOKEN" \
  --data-urlencode "searchText=Old Vendor Ltd" \
  --data-urlencode "ignoringCase=true" \
  -F "file=@Book1.xlsx"

Szűkítse egy lapra, vagy egy lap egy régiójára, két további lekérdezési paraméterrel:

# Only "Q3 Forecast", only the range A1:F40
curl -X PUT "https://api.aspose.cloud/v4.0/cells/search/content" \
  -H "Authorization: Bearer $TOKEN" \
  --data-urlencode "searchText=Old Vendor Ltd" \
  --data-urlencode "worksheet=Q3 Forecast" \
  --data-urlencode "cellArea=A1:F40" \
  -F "file=@Book1.xlsx"

② C# / .NET

using Aspose.Cells.Cloud.SDK.Api;
using Aspose.Cells.Cloud.SDK.Request;

var cellsApi = new CellsApi("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET");

// Local file, whole workbook
var request = new SearchSpreadsheetContentRequest(
    spreadsheet:  "C:/audit/Book1.xlsx",   // local file path
    searchText:   "Old Vendor Ltd",
    ignoringCase: true);

SearchResponse response = cellsApi.SearchSpreadsheetContent(request);

foreach (var item in response.TextItems)
{
    Console.WriteLine($"{item.Worksheet} | {item.Position} | {item.Content}");
}
// Same call, scoped to one sheet and one range
var scoped = new SearchSpreadsheetContentRequest(
    spreadsheet:  "C:/audit/Book1.xlsx",
    searchText:   "Old Vendor Ltd",
    ignoringCase: true,
    sheetname:    "Q3 Forecast",
    cellarea:     "A1:F40");

A kérésmodellek szintén elérhetővé teszik a password (védett munkafüzet megnyitása) és a regoin (régió/nyelvi beállítás) paramétereket — ugyanazok az opcionális paraméterek, amelyeket a felhő‑tároló változatoknál a storageName néven látható. Vegye figyelembe, hogy a .NET SDK megtartja a regoin helyesírást; a Python SDK ugyanazt a két beállítást password és region néven hívja.

③ Python / Java

A Python SDK ugyanazt az endpoint családot csomagolja, a kérés‑modell mezői egy‑az‑egyben leképeződnek a C#‑os megfelelőikre, de snake_case formátumban:

from asposecellscloud.apis.cells_api import CellsApi
from asposecellscloud.requests import (
    SearchSpreadsheetContentRequest,
    SearchContentInRemoteRangeRequest,
)

instance = CellsApi("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET")

# Local upload — returned items carry Worksheet / Position / Content
local = instance.search_spreadsheet_content(
    SearchSpreadsheetContentRequest(
        "Book1.xlsx", "Old Vendor Ltd",
        ignoring_case=True, worksheet="Q3 Forecast", cell_area="A1:F40"))

# Range-scoped search of a file already in cloud storage
remote = instance.search_content_in_remote_range(
    SearchContentInRemoteRangeRequest(
        "Book1.xlsx", "Q3 Forecast", "A1:F40", "Old Vendor Ltd",
        ignoring_case=True, folder="Reports"))

for item in remote.text_items:
    print(item.worksheet, item.position, item.content)

A Java SDK ugyanilyen felépítésű, a Request objektumok setterekkel épülnek:

import com.aspose.cloud.cells.api.CellsApi;
import com.aspose.cloud.cells.model.SearchResponse;
import com.aspose.cloud.cells.request.SearchContentInRemoteRangeRequest;

public class SearchDemo {
    public static void main(String[] args) throws Exception {
        CellsApi api = new CellsApi("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET");

SearchContentInRemoteRangeRequest req = new SearchContentInRemoteRangeRequest();
        req.setName("Book1.xlsx");
        req.setWorksheet("Q3 Forecast");
        req.setCellArea("A1:F40");
        req.setSearchText("Old Vendor Ltd");
        req.setIgnoringCase(true);
        req.setFolder("Reports");

SearchResponse response = api.searchContentInRemoteRange(req);
        response.getTextItems().forEach(i ->
            System.out.println(i.getWorksheet() + " | " + i.getPosition() + " | " + i.getContent()));
    }
}

Ha nyers REST-et használsz, a fentebb szereplő cURL a teljes szerződés — a multipart mezőnek egyszerűen a fájlnevet kell tartalmaznia, mivel a szolgáltatás a munkafüzet nevét (és ezáltal a formátumát) ebből származtatja.

5. Forgatókönyv B: Olyan fájl keresése, amely már a felhő tárolóban van

Ha a munkafüzet már az Aspose Cloud Storage-ban van, hagyja ki a letöltést teljesen — a szolgáltatás ott olvassa, ahol van:

# Whole workbook
curl -X PUT "https://api.aspose.cloud/v4.0/cells/Book1.xlsx/search/content" \
  -H "Authorization: Bearer $TOKEN" \
  --data-urlencode "searchText=Old Vendor Ltd" \
  --data-urlencode "ignoringCase=true" \
  --data-urlencode "folder=Reports"

# Just one worksheet
curl -X PUT "https://api.aspose.cloud/v4.0/cells/Book1.xlsx/worksheets/Q3%20Forecast/search/content" \
  -H "Authorization: Bearer $TOKEN" \
  --data-urlencode "searchText=Old Vendor Ltd"

# Just one range of one worksheet
curl -X PUT "https://api.aspose.cloud/v4.0/cells/Book1.xlsx/worksheets/Q3%20Forecast/ranges/A1:F40/search/content" \
  -H "Authorization: Bearer $TOKEN" \
  --data-urlencode "searchText=Old Vendor Ltd"
// Whole workbook in storage
var response = cellsApi.SearchContentInRemoteSpreadsheet(
    new SearchContentInRemoteSpreadsheetRequest(
        name:         "Book1.xlsx",
        searchText:   "Old Vendor Ltd",
        ignoringCase: true,
        folder:       "Reports"));

// One worksheet
var sheetHits = cellsApi.SearchContentInRemoteWorksheet(
    new SearchContentInRemoteWorksheetRequest(
        name:       "Book1.xlsx",
        sheetname:  "Q3 Forecast",
        searchText: "Old Vendor Ltd",
        folder:     "Reports"));

// One range
var rangeHits = cellsApi.SearchContentInRemoteRange(
    new SearchContentInRemoteRangeRequest(
        name:        "Book1.xlsx",
        sheetname:   "Q3 Forecast",
        cellArea:    "A1:F40",
        searchText:  "Old Vendor Ltd",
        ignoringCase: true,
        folder:      "Reports"));

Miért három végpont egy helyett? Mert az útvonal hordozza a hatókört. A teljes munkafüzet végpont egy nevet és egy lekérdezést vesz fel; a munkalap végpont egy munkalap szegmenst; a tartomány végpont egy munkalapot és egy tartomány szegmenst vesz fel. Ez egy tiszta, gyorsítótárazható REST forma — és azt jelenti, hogy a „szűkítsd a keresést” paraméterek (worksheet, cellArea) csak a helyi fájl végponton léteznek, ami érdemes megjegyezni, amikor egy hívást egyik hatókörből a másikba portálsz.

6. Forgatókönyv C: Szerezze meg az összes szövegelemet egy munkafüzetben

Néha nincs keresőkifejezés — csak a leltárra van szükség. Az all-textitems végpontok minden szövegelemet visszaadják a munkafüzetben, így összehasonlíthat két revíziót, felépíthet egy fordítási szószedetet, vagy betáplálhat egy indexelőt:

# Cloud file — every text item
curl -X PUT "https://api.aspose.cloud/v4.0/cells/Book1.xlsx/search/content/all-textitems" \
  -H "Authorization: Bearer $TOKEN" \
  --data-urlencode "folder=Reports"

# Local upload — every text item
curl -X PUT "https://api.aspose.cloud/v4.0/cells/search/content/all-textitems" \
  -H "Authorization: Bearer $TOKEN" \
  -F "file=@Book1.xlsx"

A válasz ugyanaz a SearchResponse boríték, amelyben a Content minden cella karakterlánc, hiperhivatkozás felirat és alakzat szöveg esetén fel van töltve a fájlban. Ez a “grep the whole workbook” primitív.

7. Szcenárió D: Csere — és a két nagyon különböző eredmény

Replace az a hely, ahol az API ketté oszlik, és az osztás szándékos:

Helyi feltöltés → töltse le a javított fájlt Felhő fájl → vissza mentve a tárolóba
Végpont PUT /v4.0/cells/replace/content PUT /v4.0/cells/{name}/replace/content
Visszatér Egy fájlfolyam (ugyanabban a formátumban, ahogy feltöltötte) CellsCloudResponse { "Code": 200, "Status": "OK" }
Érintett tároló Nincs Az eredeti fájl felül van írva

① Cserélje ki egy helyi munkafüzetben, streamelje vissza az eredményt

curl -X PUT "https://api.aspose.cloud/v4.0/cells/replace/content" \
  -H "Authorization: Bearer $TOKEN" \
  --data-urlencode "searchText={{COMPANY}}" \
  --data-urlencode "replaceText=Northwind Traders" \
  -F "file=@template.xlsx" \
  -o template-rendered.xlsx
using Aspose.Cells.Cloud.SDK.Request;

var request = new ReplaceSpreadsheetContentRequest(
    spreadsheet: "C:/templates/template.xlsx",
    searchText:  "{{COMPANY}}",
    replaceText: "Northwind Traders");

// Option A: get the corrected workbook as a Stream
using Stream corrected = cellsApi.ReplaceSpreadsheetContent(request);
using var outFile = File.Create("C:/templates/template-rendered.xlsx");
corrected.CopyTo(outFile);

// Option B: let the SDK write it for you (.NET overload with an output path)
// cellsApi.ReplaceSpreadsheetContent(request, "C:/templates/template-rendered.xlsx");

Itt is elérhetők két hatókör paraméter — sheetname és cellarea — így egy lapon helyőrzőket renderelhet anélkül, hogy a sablon többi részét módosítaná.

② Cserélés felhői munkafüzetben, helyben mentés

# Whole workbook, saved back to storage
curl -X PUT "https://api.aspose.cloud/v4.0/cells/Book1.xlsx/replace/content" \
  -H "Authorization: Bearer $TOKEN" \
  --data-urlencode "searchText=Old Vendor Ltd" \
  --data-urlencode "replaceText=Northwind Traders" \
  --data-urlencode "folder=Reports"

# One worksheet
curl -X PUT "https://api.aspose.cloud/v4.0/cells/Book1.xlsx/worksheets/Q3%20Forecast/replace/content" \
  -H "Authorization: Bearer $TOKEN" \
  --data-urlencode "searchText=Old Vendor Ltd" \
  --data-urlencode "replaceText=Northwind Traders" \
  --data-urlencode "folder=Reports"

# One range
curl -X PUT "https://api.aspose.cloud/v4.0/cells/Book1.xlsx/worksheets/Q3%20Forecast/ranges/A1:F40/replace/content" \
  -H "Authorization: Bearer $TOKEN" \
  --data-urlencode "searchText=Old Vendor Ltd" \
  --data-urlencode "replaceText=Northwind Traders" \
  --data-urlencode "folder=Reports"
// Whole workbook — result saved back into cloud storage
cellsApi.ReplaceContentInRemoteSpreadsheet(
    new ReplaceContentInRemoteSpreadsheetRequest(
        name:        "Book1.xlsx",
        searchText:  "Old Vendor Ltd",
        replaceText: "Northwind Traders",
        folder:      "Reports"));

// Range-scoped
cellsApi.ReplaceContentInRemoteRange(
    new ReplaceContentInRemoteRangeRequest(
        name:        "Book1.xlsx",
        searchText:  "Old Vendor Ltd",
        replaceText: "Northwind Traders",
        worksheet:   "Q3 Forecast",
        cellarea:    "A1:F40",
        folder:      "Reports"));

A helyben történő csere a tervezés szerint destruktív. A felhő változatok felülírják a {name} elemet — nem készül biztonsági másolat. Az audit‑igényes munkafolyamatokhoz tarts egy verziózott másolatot (például először töltsd fel a Book1-2026-09-11.xlsx fájlt, majd cseréld), vagy használd a helyi feltöltés változatát, és tárold magadnak a visszakapott adatfolyamot.


8. E forgatókönyv: Törött linkek megtalálása, mielőtt valaki más megtalálná őket

A hivatkozás-ellenőrzés itt a rejtett funkció — ez egy olyan dolog, amelyet nehéz saját kezűleg megírni, és kínos kihagyni. Az összes négy hatókör elérhető; a helyi fájl változat a leggyorsabb ésszerű ellenőrzés:

# Local workbook, whole file
curl -X PUT "https://api.aspose.cloud/v4.0/cells/search/broken-links" \
  -H "Authorization: Bearer $TOKEN" \
  -F "file=@Book1.xlsx"

# Cloud workbook, whole file
curl -X PUT "https://api.aspose.cloud/v4.0/cells/Book1.xlsx/search/broken-links" \
  -H "Authorization: Bearer $TOKEN" \
  --data-urlencode "folder=Reports"

# Cloud workbook, one worksheet
curl -X PUT "https://api.aspose.cloud/v4.0/cells/Book1.xlsx/worksheets/Links/search/broken-links" \
  -H "Authorization: Bearer $TOKEN" \
  --data-urlencode "folder=Reports"
var broken = cellsApi.SearchSpreadsheetBrokenLinks(
    new SearchSpreadsheetBrokenLinksRequest(
        spreadsheet: "C:/audit/Book1.xlsx"));

foreach (var link in broken.BrokenLinks)
{
    Console.WriteLine($"{link.Worksheet} {link.Position} -> {link.LinkAddress}");
}

Az eredmény egy lista, amelyet közvetlenül felhasználhatsz: minden bejegyzés megnevezi a munkalapot, a pozíciót és a problémás LinkAddress-t.

9. Mi kerül valójában beolvasásra? (az a megvalósítási részletek, amelyek megváltoztatják az elvárásaidat)

Ez a rész választja el a működő integrációt a meglepőtől. A WorkbookExtension.cs olvasásakor egy keresés három különböző elem típust jár be minden munkalapon:

Element type Source What’s matched Position címke
Cellák szövege worksheet.Cells A cella karakterlánc értéke Cell:A1
Hiperhivatkozások worksheet.Hyperlinks A link cím és a megjelenített szöveg Hyperlink:Sheet1!B4
Alakzatok worksheet.Shapes shape.Text — szövegdobozok, felhívások, címkék Shape:TextBox 3

És itt vannak a viselkedések, amelyeket érdemes tudni előtt, hogy körülötte tervezzen:

Csak a karakterlánc cellákat keresik. A vizsgálat a CellValueType.IsString szűrőn alapul. Az szám, dátum vagy logikai értéket tartalmazó cella kihagyásra kerül — így a 2025 keresés nem egyezik meg egy dátumformátumú cellával, amelynek sorozatszáma véletlenül 2025. Azok a cellák, amelyek képletei szöveggé értékelődnek, egyeznek, mivel értéktípusuk karakterlánc.

Az egyetlen egyezési lehetőség a kis- és nagybetűk érzékenysége. ignoringCase a InvariantCultureIgnoreCase és a InvariantCulture összehasonlítás között vált — semmi más. Nincs egész szó, regex vagy “egész cellaérték egyezés” mód, annak ellenére, hogy a generált API dokumentáció ezt sugallhatja. Ha ezekre a szemantikai elemekre van szükség, húzza le az all-textitems készletet, és szűrje le a saját oldalán.

A Replace egyszerű, kis- és nagybetűkre érzékeny, szó szerinti helyettesítés. A Search ignoringCase jelzője nincs megfelelője a Replace-ben — a replace útvonal egyáltalán nem tartalmaz kis- és nagybetűk figyelmen kívül hagyására szolgáló paramétert. És a két kódelág belsőleg eltér: egy teljes munkalap helyettesítés a motor Worksheet.Replace(...) metódusára delegál, míg egy tartományra korlátozott helyettesítés végigiterálja a tartományt, és minden karakterlánc cellát újraír a cell.StringValue.Replace(...) segítségével. Gyakorlati következmény: a tartományra korlátozott helyettesítés csak a karakterlánc cellákat érinti, és szó szerinti, nem mintára alapuló.

A hiperhivatkozás egyezések a címet jelentik, nem a feliratot. Amikor egy keresés a hiperhivatkozás megjelenítési szövegére illeszkedik, a visszaadott Content továbbra is hyperlink.Address. Ha egy “itt találtam” jelentést jelenítesz meg, akkor a URL-re számíts — a felirat nem kerül visszaadásra.

A hibás hivatkozások ellenőrzése csak a http:// és https:// protokollokat vizsgálja. mailto: hivatkozások, helyi fájl útvonalak és belső #Sheet1!A1 horgonyok teljesen kihagyásra kerülnek — soha nem kerülnek tesztelésre, ezért nem fognak megjelenni az eredményekben. Emellett a alakzatok és a cellákhoz csatolt hiperhivatkozásokat is átvizsgálja, ami pontosan azok a helyek, ahol a halott hivatkozások elrejtőznek. Vedd figyelembe, hogy egy hibás hivatkozás Position a nyers hyperlink.Area-ból épül fel (nem a keresési végpontok által használt barátságosabb Area.ToRangName()-ból), ezért ne feltételezd, hogy a két család azonos módon jeleníti meg a pozíciókat — ha stabil kulcsra van szükséged, dolgozd fel a Worksheet + LinkAddress párost.

“Broken” azt jelenti, hogy “elérhetetlen”, nem “hibás állapotkód”. A ellenőrzés minden hivatkozáshoz egy HTTP HEAD kérést küld, és bármilyen választ — beleértve a 404 vagy 500 — elérhetőnek tekint; csak akkor jelöli a hivatkozást töröttnek, ha a kérés kivételt dob (DNS hiba, elutasított kapcsolat, TLS hiba, időtúllépés). Tehát a kimenetet “azok a hivatkozások, amelyeket nem sikerült elérni” formában kell értelmezni. Ha valójában azt szeretnéd, hogy “azok a hivatkozások, amelyek nem adnak vissza 2xx-et”, akkor magadnak kell újra ellenőrizned a visszakapott LinkAddress értékeket.

cellArea elfogadott, de a broken-link végpontokon nem kerül alkalmazásra. A BrokenLinks implementáció csak munkalap neve alapján szűr; a cell-area argumentum átadásra kerül, de soha nem használják. Gyakorlatban ez azt jelenti, hogy a .../ranges/A1:F40/search/broken-links jelenleg ugyanúgy viselkedik, mint a /worksheet/search/broken-links ugyanazon munkalap esetén — a hivatkozások az egész lapra vonatkozóan ellenőrzésre kerülnek. Állítsd be a jelentéseket ennek megfelelően (vagy szűrd a visszakapott listát pozíció szerint), ahelyett, hogy azt feltételeznéd, a tartomány szűkíti az ellenőrzést.

Ezek közül egyik sem akadály — ők a különbség egy olyan funkció között, amely „works in the demo”, és egy olyan között, amely megbízhatóan viselkedik a termelésben.


10. Hibakezelés és üzemeltetési megjegyzések

A szerződés, amelyet a vezérlő dokumentál

Állapot Jelentés Tipikus ok
400 Hibás kérés Érvénytelen URL/paraméterek — például hibás cellArea, vagy hiányzó searchText
401 Jogosulatlan Az azonosítás sikertelen, vagy nem lettek megadva érvényes hitelesítő adatok
404 Nem található A forrásfájl nem érhető el a felhő tárolóban
500 Szerverhiba A szolgáltatás hibába ütközött a táblázat adatainak lekérése közben

Belsőleg minden művelet egy segédprogramba (WorkbookElementOperation, UpdateWorkbookElementOperation, UpdateWorkbookElementOperationAndSave) csomagolja a munkáját, amely elkapja a hibákat, és újra dobja őket CellsApiException‑ként, a művelet nevével előtagként — például SearchContentInRemoteRange Error Message: .... Ez a művelet neve az a karakterlánc, amelyet a naplóiban láthat.

Művelet neve Végpontcsoport
SearchSpreadsheetContent, SearchContentInRemoteSpreadsheet Helyi / távoli keresés
SearchContentInRemoteWorksheet, SearchContentInRemoteRange Hatókörrel korlátozott távoli keresés
ReplaceSpreadsheetContent Helyi csere (folyam eredmény)
ReplaceContentInRemoteSpreadsheet, ReplaceContentInRemoteWorksheet, ReplaceContentInRemoteRange Távoli csere (eredmény mentése)
SearchSpreadsheetBrokenLinks, SearchBrokenLinksInRemoteSpreadsheet, SearchBrokenLinksInRemoteWorksheet, SearchBrokenLinksInRemoteRange Link ellenőrzés

Az SDK-k által biztosított opcionális paraméterek

A dokumentált paramétereken túl a felhő‑tárolási kérésmodellek mindegyike ugyanazt a három opcionális beállítást tartalmazza:

  • password — egy jelszóval védett munkafüzet megnyitása (a kereséseknek nincs szükségük írási hozzáférésre, így a csak olvasható fájlok is működnek);
  • storageName — egy egyéni/kapcsolt felhő tároló megcélzása az alapértelmezett helyett (Python: storage_name);
  • regoin — a munkafüzet értelmezésekor használt régió/nyelvi beállítás (Python ezt region-nek hívja).

Hitelesítés

Az összes SDK automatikusan hitelesíti magát az OAuth 2.0 client_credentials és egy JWT használatával; ha nyers cURL-t használ, először egyszer hívja meg a /connect/token végpontot (lásd §4, ①).


11. Miért az Aspose.Cells Cloud kereséshez és cseréhez?

  • ✅ Nulla helyi függőség — nincs Office/Excel, nincs COM, nincs szkriptelési hoszt. Bármilyen nyelvből, bármilyen platformon (Linux, konténerek, serverless) hívható;
  • ✅ Mélyebb, mint a szöveges keresés — a cellák, alakzatok és hiperhivatkozások mind elsőrendű egyezési célpontok, ami pontosan ott van, ahol a valódi táblázatok a tartalmukat tárolják;
  • ✅ Hatókörű műveletek — munkafüzet / munkalap / tartomány, így egy lap egy régióját javíthatod anélkül, hogy egy 50 MB-os fájlt újraírnál;
  • ✅ Felhő-natív vagy állapot nélküli — a tárolt fájlok soha nem hagyják el a tárolót; a helyi feltöltési műveletek egyáltalán nem hagynak nyomot;
  • ✅ Magas pontosságú újraírás — a helyettesítéseket az Aspose.Cells motoron keresztül alkalmazzák és újra sorosítják, így a képletek, stílusok, diagramok és formázás megmaradnak a körutazás során;
  • ✅ Egyforma felület az SDK-k között — a cURL, .NET, Python és Java felületek 1:1-esen leképeződnek, így a egy nyelvből másolt minta a többi nyelvben is működik.

Kezdje el most: regisztráljon az Aspose Cloud Dashboard oldalon, hozzon létre egy Application-t, helyezze be a hitelesítő adatait a fenti bármely snippet-be, és irányítsa egy saját munkafüzetére — percek alatt működő tartalom auditot kap.

Hasznosnak találtad? Jelöld csillaggal, könyvjelzőzd vagy oszd meg — és írd meg a megjegyzésekben, hogy mire használod a munkafüzet keresés és csere funkciót.