Excel Buffer How to Check Worksheet Exists

samantha73
Member Posts: 118
Hi All
I'm importing an Excel file with multiple worksheets into BC SaaS, and I want to check if a specific worksheet exists and if not provide a user friendly error message. Say worksheet "Order" does not exist.
I'm importing an Excel file with multiple worksheets into BC SaaS, and I want to check if a specific worksheet exists and if not provide a user friendly error message. Say worksheet "Order" does not exist.
0
Best Answer
-
Hello @samantha73,
From the "Excel Buffer" table you can use the procedure GetSheetsNameListFromStream, and if it return true check the temp table TempNameValueBufferOut for the worsheet name that you are looking for.procedure GetSheetsNameListFromStream(FileStream: InStream; var TempNameValueBufferOut: Record "Name/Value Buffer" temporary) SheetsFound: Boolean var SheetNames: DotNet ArrayList; SheetName: Text[250]; i: Integer; begin XlWrkBkReader := XlWrkBkReader.Open(FileStream); TempNameValueBufferOut.Reset(); TempNameValueBufferOut.DeleteAll(); SheetNames := SheetNames.ArrayList(XlWrkBkReader.SheetNames); if IsNull(SheetNames) then exit(false); SheetsFound := SheetNames.Count > 0; if not SheetsFound then exit(false); for i := 0 to SheetNames.Count - 1 do begin SheetName := SheetNames.Item(i); if SheetName <> '' then begin TempNameValueBufferOut.Init(); TempNameValueBufferOut.ID := i; TempNameValueBufferOut.Name := Format(i + 1); TempNameValueBufferOut.Value := SheetName; TempNameValueBufferOut.Insert(); end; end; CloseBook; end;
Regards0
Answers
-
Hello @samantha73,
From the "Excel Buffer" table you can use the procedure GetSheetsNameListFromStream, and if it return true check the temp table TempNameValueBufferOut for the worsheet name that you are looking for.procedure GetSheetsNameListFromStream(FileStream: InStream; var TempNameValueBufferOut: Record "Name/Value Buffer" temporary) SheetsFound: Boolean var SheetNames: DotNet ArrayList; SheetName: Text[250]; i: Integer; begin XlWrkBkReader := XlWrkBkReader.Open(FileStream); TempNameValueBufferOut.Reset(); TempNameValueBufferOut.DeleteAll(); SheetNames := SheetNames.ArrayList(XlWrkBkReader.SheetNames); if IsNull(SheetNames) then exit(false); SheetsFound := SheetNames.Count > 0; if not SheetsFound then exit(false); for i := 0 to SheetNames.Count - 1 do begin SheetName := SheetNames.Item(i); if SheetName <> '' then begin TempNameValueBufferOut.Init(); TempNameValueBufferOut.ID := i; TempNameValueBufferOut.Name := Format(i + 1); TempNameValueBufferOut.Value := SheetName; TempNameValueBufferOut.Insert(); end; end; CloseBook; end;
Regards0
Categories
- All Categories
- 73 General
- 73 Announcements
- 66.6K Microsoft Dynamics NAV
- 18.7K NAV Three Tier
- 38.4K NAV/Navision Classic Client
- 3.6K Navision Attain
- 2.4K Navision Financials
- 116 Navision DOS
- 851 Navision e-Commerce
- 1K NAV Tips & Tricks
- 772 NAV Dutch speaking only
- 617 NAV Courses, Exams & Certification
- 2K Microsoft Dynamics-Other
- 1.5K Dynamics AX
- 320 Dynamics CRM
- 111 Dynamics GP
- 10 Dynamics SL
- 1.5K Other
- 990 SQL General
- 383 SQL Performance
- 34 SQL Tips & Tricks
- 35 Design Patterns (General & Best Practices)
- 1 Architectural Patterns
- 10 Design Patterns
- 5 Implementation Patterns
- 53 3rd Party Products, Services & Events
- 1.6K General
- 1.1K General Chat
- 1.6K Website
- 83 Testing
- 1.2K Download section
- 23 How Tos section
- 252 Feedback
- 12 NAV TechDays 2013 Sessions
- 13 NAV TechDays 2012 Sessions