lxHandleX — ממשק ראשי עבור פורמט Excel 2007+ OOXML (.xlsx) ותהליכי עבודה של קריאה/כתיבה ב-ODS. מספק סוגי חוברת עבודה וגיליון עבודה משלו כך שהתנהגות ספציפית ל-XLSX אינה מותאמת בדיעבד לנתיב הקוד של BIFF, וחושף ייבוא ODS, ייצוא, זיהוי ODS אוטומטי דרך Open, SourceFormat ו-TODSExportOptions
היררכיית מחלקות
- המעטפת של XLSX חושפת את המחלקות הבאות
- מחלקות אלו אינן תלויות ב-
lxHandle.TXLSWorkBookוב-lxHandle.TXLSWorksheet. יישומים הזקוקים לשני הפורמטים יכולים להשתמש בשני הממשקים זה לצד זה:
התחלה מהירה
המעטפת של XLSX עוקבת אחר אותן מוסכמות של צורת קריאה כמו המעטפת של BIFF — SaveAs / Open בחוברת העבודה, Sheets.Add / Sheets[i] באוסף גיליונות העבודה, ו-Cells.Item[Row, Col].Value באוסף התאים. הדוגמה להלן כותבת חוברת עבודה קטנה המפעילה כל תכונה הנתמכת כעת
type
TXLSXWorkbook = class // top-level workbook with SaveAs / Open
TXLSXHtmlExportOptions = class // HTML document, style, BOM, and table class options
TODSExportOptions = class // ODS export options for generator, chart, and image output
TXLSXSheets = class // worksheet collection on the workbook
TXLSXFonts = class // workbook-level font palette
TXLSXFont = class // single font descriptor
TXLSXFills = class // workbook-level fill palette
TXLSXFill = class // single fill (pattern + fg/bg color)
TXLSXBorders = class // workbook-level border palette
TXLSXBorder = class // four edges + diagonal border
TXLSXNumberFormats = class // workbook-level custom format codes
TXLSXDefinedNames = class // workbook-level named ranges
TXLSXWorksheet = class // single worksheet with cells and decorations
TXLSXCells = class // cell collection on the worksheet
TXLSXCell = class // single cell (value, formula, *Index style refs)
TXLSXRange = class // rectangular worksheet range wrapper
TXLSXMergedCells = class // merged-range collection
TXLSXHyperlinks = class // hyperlink collection
TXLSXComments = class // cell-comment collection
TXLSXImages = class // image collection (drawings + media)
TXLSXConditionalFormats = class // conditional formatting rules
TXLSXDataValidations = class // data-validation rules
TXLSXTables = class // Excel-style table collection
TXLSXCharts = class // chart collection (anchored or full-page)
TXLSXChart = class // single chart (column / bar / line / pie / scatter / bubble / radar)
TXLSXChartSeries = class // chart series with category, value, and bubble-size ranges
TXLSXTextBox = class // standalone worksheet drawing text box
TXLSXRichText = class // per-run rich-text payload for cells
TXLSXAlignment = class // cell alignment / wrap / indent / rotation
TXLSXExternalLinks = class // external workbook link collection
TXLSXExternalLink = class // single external workbook reference (Target URL + SheetNames)
תכונות נתמכות
uses
lxHandle, // XLS / HTML / RTF / CSV workbook (TXLSWorkBook)
lxHandleX; // XLSX workbook (TXLSXWorkbook)
ערכי תאים: מספרים, בוליאניים, מחרוזות, תאריכים, נוסחאות
טבלת מחרוזות משותפות (xl/sharedStrings.xml) עם מניעת כפילויות בנתיב הכתיבה
uses lxHandleX;
var
wb: TXLSXWorkbook;
ws: TXLSXWorksheet;
bold, yellow, box, currency: Integer;
begin
wb := TXLSXWorkbook.Create;
try
bold := wb.Fonts.Add('Calibri', 12, True, False);
yellow := wb.Fills.AddSolid($FFFFFF00);
box := wb.Borders.AddBox(xlsxBorderThin);
currency := wb.NumberFormats.Add('"$"#,##0.00');
ws := wb.Sheets.Add('Demo');
ws.Cells.Item[1, 1].Value := 'Hello';
ws.Cells.Item[1, 1].FontIndex := bold + 1;
ws.Cells.Item[1, 2].Value := 123.45;
ws.Cells.Item[1, 2].NumberFormatIndex := currency + 1;
ws.Cells.Item[2, 1].Value := Now; // tagged as date
ws.Cells.Item[2, 2].Formula := 'SUM(B1:B1)';
ws.Cells.Item[3, 1].FillIndex := yellow + 1; // highlight cell
ws.Cells.Item[3, 2].BorderIndex := box + 1; // boxed cell
ws.ColWidth[1] := 24;
ws.RowHeight[1] := 28;
ws.MergeCells(4, 1, 4, 3);
ws.Range['A8:C10'].Merge(True); // merge across rows
ws.AddHyperlink(5, 1, 'https://www.loslab.com', 'Visit losLab');
ws.AddComment(5, 2, 'Important note', 'Kevin');
ws.AddImageFromFile(6, 1, 'logo.png');
ws.AddConditionalFormat('B1:B10', xlsxCfOpGreaterThan, '100');
ws.AddListValidation('C1:C5', 'Yes,No,Maybe');
wb.DefinedNames.Add('SalesData', 'Demo!$A$1:$B$10');
wb.SaveAs('demo.xlsx');
finally
wb.Free;
end;
end;
פלטות סגנונות ברמת חוברת עבודה — Workbook.Fonts, Fills, Borders, ו-NumberFormats — בתוספת FontIndex / FillIndex / BorderIndex / NumberFormatIndex לכל תא. SaveAs מפיק בלוקים אמיתיים של <fonts> / <fills> / <borders> / <numFmts> + <cellXfs>; Open מנתח אותם בחזרה כך ש-Name/Size/Bold/Italic/Color, תבניות מילוי, קצוות גבולות ופורמטי מספרים מותאמים אישית שורדים כולם את הסבב המלא
- רוחב לכל עמודה באמצעות
Worksheet.ColWidth[Col]וגובה לכל שורה באמצעותWorksheet.RowHeight[Row](בלוק<cols>של גיליון עבודה ותכונותhtלכל<row>) cellXfתאריך מובנה באינדקסXlsxXfIndexDate; ערכיTDateTimeמתויגים באופן אוטומטי- תאים ממוזגים (
<mergeCells>), כוללTXLSXRange.Merge(True)עבור מיזוג בסגנון Excel לאורך שורות - טווחי גיליון עבודה באמצעות
Worksheet.Range,RCRange,UsedRange,EntireRow, ו-EntireColumn. ראה TXLSXRange עבור ערכי אצווה, נוסחאות,SetArrayFormula, אינדקסי סגנון, פורמטי מספרים, גבולות, דגלי הגנה, התאמה אוטומטית, מיזוג, היסט, שינוי גודל, מיון מרובה מפתחות שלSort, סגנונות תאים מובנים שלApplyBuiltinStyle, כלי עזר להעתקה/העברה, כלי עזר להכנסה/מחיקה של שורות שלמות/עמודות שלמות, וייצוא HTML של טווח נבחר - קישורי היפר (
<hyperlinks>) המגובים על ידי קשרי rels לכל גיליון עבודה עבור כתובות URL חיצוניות - הערות תא עם ציור VML (
xl/commentsN.xml+xl/drawings/vmlDrawingN.vml) כך שבלוני ההערות יוצגו ב-Excel - תמונות משובצות (PNG / JPEG / GIF / BMP) באמצעות
Worksheet.Images, נכתבות ל-xl/media/imageN.<ext>בתוספת XML של ציור וקשרי גומלין לכל גיליון - תיבות טקסט של ציור עצמאיות באמצעות
Worksheet.AddTextBox, נכתבות כצורות ציור של גיליון עבודה עם גופי טקסט במקום הערות תאים, עם חיפוש עוגן ישיר ועוזרי מחיקת טווח - טווחים בעלי שם ברמת חוברת עבודה באמצעות
Workbook.DefinedNames(בטווח של חוברת עבודה או בטווח של גיליון באמצעותSheetIndex) - חישוב נוסחה באמצעות
Workbook.Calculateו-Worksheet.Calculate, תוך שיתוף מנתח ומעריך נוסחאות ה-XLS עבור נוסחאות עם סימן שווה מוביל, הפניות לתאים וטווחים, תאי נוסחאות מופנים, הפניות בין גיליונות, טווחי שמות מוגדרים ופונקציות נתמכות של טקסט, תאריך, יום עבודה, הנדסה/המרת בסיס, סיביות, סטטיסטיקה, צבירה ומתמטיקה; השתמש ב-Workbook.OnUserFunctionאו ב-Workbook.OnUserFunctionExכדי לפתור פונקציות מותאמות אישית או לא נתמכות - עיצוב מותנה לכל גיליון עבודה (
Worksheet.ConditionalFormats) ואימות נתונים (Worksheet.DataValidations) כולל קיצור הדרך של הרשימה הנפתחתAddListValidation(Range, Items) - קבוצות מתאר של שורה / עמודה (
RowOutlineLevel,ColOutlineLevel), מצב מוסתר (RowHidden,ColHidden), ומצב קבוצה מכווצת (RowCollapsed,ColCollapsed) - חלוניות מוקפאות באמצעות
Worksheet.FreezePanes(Row, Col) - הגדרת עמוד — שישה מאפייני שוליים, גודל נייר, כיוון, קנה מידה של עמוד, התאמה לרוחב / התאמה לגובה, פלוס
HeaderText/FooterText; ניתן להקצות קבועיxlsxPaper*בעלי שם כגוןxlsxPaperLetter,xlsxPaperA4,xlsxPaperA3ו-xlsxPaperLegalל-PaperSize - סינון אוטומטי (
Worksheet.SetAutoFilter) - טבלאות בסגנון Excel (TXLSXTable) עם מידע על סגנון ועמודות טבלה (tableColumns)
- ממשקי API של תת-אוסף Facade
- מחלקות האוסף של המעטפת מנהלות עיצובים מותנים, אימותי נתונים, טווחים עם שם, תמונות וטבלאות. להלן חברי הליבה של כל אוסף
- TXLSXConditionalFormats: חושף כללי עיצוב מותנה. מאפיינים:
Countמתודות:AddAboveAverage,AddColorScale2,AddColorScale3,AddDataBar,AddExisting,AddExpression,AddIconSet,AddSimpleRule,AddTextRule,AddTop10,DeleteAt,DeleteInRange,FindAt,IndexOfCell
TXLSXDataValidations: חושף אימותי נתונים. מאפיינים: Count מתודות: AddExisting, AddList, DeleteAt, DeleteInRange, FindAt, IndexOfCell
TXLSXDefinedNames: חושף שמות מוגדרים (טווחים בעלי שם). מאפיינים: Count מתודות: DeleteByName, FindByName, IndexOfName
- TXLSXImages: חושף תמונות משובצות. מאפיינים:
Countמתודות:DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXTables: חושף טבלאות Excel. מאפיינים:
Countמתודות:AddExisting,DeleteByName,FindByName,IndexOfName - תכונות נתמכות
- מאפייני מסמך (
Workbook.Title,Author,Subject,Keywords,Description,LastModifiedBy,Company, וכו') נכתבים ל-docProps/core.xml+docProps/app.xml - הגנת סיסמה לגיליון עבודה / חוברת עבודה (גיבוב 16 סיביות ישן) באמצעות
Worksheet.Protect/Workbook.ProtectWorkbook; שמירה מוגנת בסיסמה ב-AES תואמת Excel באמצעותSaveAsEncrypted, תוך שימוש בהאצת AES-NI כאשר היא זמינה וחלופה של תוכנה ניידת אחרת.OpenEncryptedעדיין מעלה שגיאה עבור חבילות מוצפנות עד להגעת תמיכה בפענוח
שימור פרויקט VBA באמצעות Workbook.LoadVbaProjectFromFile / VbaProject; הבתים מועברים ללא שינוי. ניתן לבדוק נתוני vbaProject.bin חוקיים גם באמצעות Workbook.ParsedVBAProject
- תרשימים — עמודות / עמודות לרוחב / קווים / עוגה / שטח / טבעת באמצעות TXLSXChart, מעוגנים בגיליון עבודה (
Worksheet.AddChart) או בעמוד מלא בגיליון תרשים ייעודי באמצעותWorkbook.AddChartSheet(Name, Type, Title) - תאי טקסט עשיר באמצעות TXLSXRichText עם עיצוב גופן לכל מקטע; סבבים דרך טבלת המחרוזות המשותפות
- עוגני קישור היפר פנימיים באמצעות
Worksheet.AddHyperlinkToCell(Row, Col, "Sheet2!A1")(אין צורך בקשר rels) - API להעתקה / העברה / ניקוי של טווח תאים בגיליון העבודה (
CopyRange,CopyRangeTo,MoveRange,ClearRange) - יישור תא באמצעות TXLSXAlignment +
AlignmentIndexלכל תא - צבע לשונית גיליון עבודה באמצעות
Worksheet.TabColor/TabColorIsAuto - מצב תצוגת גיליון עבודה באמצעות
Worksheet.View, כולל תצוגה רגילה, תצוגה מקדימה של מעברי עמוד, ותצוגת פריסת עמוד - נתיב SaveAs זורם (
Workbook.StreamingWrite := True) הבונה וכותב כל גיליון עבודה מבלי להחזיק את האחרים בזיכרון; צובר ה-XML לכל שורה משתמש ב-TXLSWideStringBuilderכך שלולאת התא נשארת ליניארית - סבב
Openעבור כל מה שלמעלה למעט חבילות XLSX מוצפנות וזיהוי גיליון תרשים, אשר נסוגים להתנהגות החלקית המתועדת - ייצוא וייבוא מבוססי זרם:
SaveAs(Stream),Open(Stream)לשימוש בזיכרון או בשדות BLOB - קריאה/כתיבה של גיליון אלקטרוני של OpenDocument:
Workbook.OpenODSו-Workbook.Openהכללי יכולים לטעון חבילות.ods, בעוד ש-Workbook.SaveAsODSו-SaveAs(..., xlsxOpenDocumentSpreadsheet)כותבים פלט ODS ישירות; מעטפת הפורמט מכסה ערכים, נוסחאות, סגנונות, טקסט עשיר, ממדי שורה/עמודה, מיזוגים, קישורי היפר, תמונות, תרשימים, טווחים בעלי שם, AutoFilter, עיצובים מותנים, אימוטי נתונים, חלוניות מוקפאות, הגדרת עמוד, כותרות עליונות/תחתונות, טווחי הדפסה, מעברי עמוד, קבוצות מתאר, צבע כרטיסייה ונראות גיליון לאורך סבבי הלוך ושוב נתמכים - אפשרויות ייצוא ODS: העבר את
TODSExportOptionsל-SaveAsODSכדי לעקוף את מחרוזת מחולל המסמכים או לדכא חלקי תרשים ותמונה בעת הפקת חבילה קלה יותר - ייבוא טקסט מופרד:
Workbook.OpenCSV(FileName)ו-Workbook.OpenCSV(Stream)מייבאים נתוני CSV או TSV עם זיהוי מפרידים, זיהוי קידוד BOM, מירכאות בסגנון RFC 4180 והסקת סוג ערך אופציונלית.Open(FileName)מנתב קבצי.csvו-.tsvלמייבא באופן אוטומטי - סריקת מטא-נתונים של חוברת עבודה:
Workbook.GetSheetNames(FileName, List)ו-Workbook.GetSheetNames(Stream, List)קוראים שמות גיליונות מסודרים מתוךxl/workbook.xmlמבלי לטעון את ה-XML של גיליון העבודה - הגנת תא:
TXLSXCell.Lockedו-FormulaHidden— שולט באילו תאים ניתנים לעריכה או אילו נוסחאות שלהם גלויות כאשר הגיליון מוגן - התאמה אוטומטית של רוחב עמודה וגובה שורה מתוכן התא:
Worksheet.AutoFitColumn,AutoFitColumns,AutoFitRow,AutoFitRows - הכנסה ומחיקה של שורה / עמודה עם תזרים מלא:
InsertRows,DeleteRows,InsertCols,DeleteCols. השפעות לוואי מתפשטות דרך תאים, טווחים ממוזגים, קישורים היפר-טקסטואליים, הערות, הקפאת חלונית, הפניות מחרוזת-טווח, טבלאות, נוסחאות תאים, נוסחאות עיצוב מותנה / אימות נתונים, יעדי קישור היפר-טקסט פנימיים, הפניות הגדרת הדפסה, מעברי עמוד ידניים, קריטריוני עמודות סינון אוטומטי, טווחי סדרות תרשים, שמות מוגדרים, עוגני תמונות ועוגני תרשימים - הגדרת עמוד מורחבת:
PrintArea,PrintTitleRows,PrintTitleCols,PrintGridlines,PrintHeadings,BlackAndWhite,Draft,PrintNotes,PrintOverThenDown - נראות גיליון:
Worksheet.Visibility (xlsxSheetVisible/xlsxSheetHidden/xlsxSheetVeryHidden) ו-IsSelected - מעברי עמוד ידניים: עזרי
AddRowBreak,AddColBreak, חיפוש אינדקס והסרת טווח - קריטריונים של עמודת סינון אוטומטי:
Worksheet.AddAutoFilterColumnעם כללי סינון של קריטריון יחיד או שני קריטריונים מסוג AND/OR, בנוסף ל-Worksheet.AutoFilterColumns.FindByColIdו-DeleteByColIdעבור חיפוש והסרה ישירה של קריטריונים (TXLSXAutoFilterColumn) - בסיס תאריכי חוברת עבודה:
Workbook.Date1904עובר בין עידן התאריכים של 1900 (ברירת המחדל של Windows) לבין 1904 (Mac) - גבולות אלכסוניים:
TXLSXBorder.DiagonalUpו-DiagonalDownמפעילים את הקווים האלכסוניים; הקצה ה-Diagonalנושא את הסגנון והצבע - מאפייני גופן מורחבים:
TXLSXFont.VertAlign(כתב עילי / כתב תחתי),OutlineFont,Shadow,Family,CharSet - מטא-נתונים של טווח בעל שם:
TXLSXDefinedName.Hiddenו-Comment - אפשרויות תצוגת גיליון:
Worksheet.Zoom,DisplayGridLines,DisplayZeros,DisplayRightToLeft,StandardWidth,StandardHeight - לוח צבעים אינדקס מיושן של OOXML:
Workbook.IndexedColor[0..63]עםResetIndexedColors - קישורים חיצוניים לחוברת עבודה:
Workbook.ExternalLinks/ TXLSXExternalLink — סבב מלא של מטא-נתונים עבור כתובת URL של יעד + שמות גיליונות - תמיכה בצבעי ערכת נושא ב-
TXLSXFont,TXLSXFill, וב-TXLSXBorderEdge: מאפייניColorTheme/ColorIndex/TintAndShadeעם סדר עדיפויות (ערכת נושא > סדרה ממופתחת > RGB) - ייצוא CSV:
Workbook.SaveAsCSV— 4 עומסי יתר (FileName או Stream × גיליון פעיל / SheetIndex מפורש + Delimiter), UTF-8 עם BOM, מירכאות לפי RFC 4180 - ייצוא HTML:
Workbook.SaveAsHTMLו-TXLSXRange.SaveAsHTMLכותבים טבלאות HTML5 עבור גיליון עבודה שלם של חוברת עבודה או רק עבור המלבן הנבחר; עומסי האפשרויות מקבליםTXLSXHtmlExportOptionsעבור פלט מסמך מלא, פליטת סגנון, פליטת BOM, ומתן שמות למחלקת טבלה - ייצוא RTF:
Workbook.SaveAsRTF— 4 עומסי יתר, טבלת RTF 1.6 עם רוחבי עמודות, עיצוב גופן לכל תא, ו-unicode מלא של BMP באמצעות תווי מילוט\uN?חתומים של 16 סיביות - תשתית משותפת
- שני ה-facades משתפים קבוצה משותפת של יחידות עזר ברמה נמוכה יותר, מה שאומר שמתארי סגנון, טבלאות גיבוב, עצי AVL, קלט/פלט של ZIP ו-XML, המרות RGB-ל-HLS ובוני מחרוזות נכתבים פעם אחת ונמצאים בשימוש על ידי כל אחד מהנתיבים. עזרי העזר המשותפים כוללים
lxStyleXf,lxStyleFont,lxStyleColor,lxStyleFill,lxStyleBorder— מתארי סגנון מודרניים
lxRgb — המרת צבעי RGB / HLS
lxHashTable, lxKeyList, lxAvlTree, lxCols, lxRows — מכולות למניעת כפילויות ואבני בניין של ערמת תאים המגובות ב-AVL
lxXmlReader,lxXmlWriter,lxZipArchive— שכבת תעבורה של OOXMLlxStrBuilder,lxCacheStream,lxWStream,lxZlibStream— עוזרי הרכבה של זרמים ומחרוזות- ראו גם
- סקירה כללית של HotXLS
- IXLSWorkbook (ממשק XLS)