19.05.2022, 01:06 | #1 |
Участник
|
Проблемы с OpenXML (DAX2012)
Добрый день!
Подскажите, есть ли понятный мануал по данной API? Пытаюсь реализовать функцию по редактированию границ ячеек. Уже всю голову сломал. Затык с *border.set_style(). Предполагал, что туда можно передать числовое значение границы, но вылезает ошибка Microsoft.Dynamics.AX.ManagedInterop.ClrBridgeException: set_Style is not a member of TopBorder |
|
19.05.2022, 06:42 | #2 |
Участник
|
Наверно, что-то вроде этого - описания классов там есть
https://docs.microsoft.com/ru-ru/off...etting-started Ну и вы бы полный код показали, который у вас ошибку вызывает - понятнее бы было Последний раз редактировалось Pandasama; 19.05.2022 в 06:44. |
|
19.05.2022, 11:59 | #3 |
Участник
|
Пытался сделать по аналогии с уже существующим методом по коррекции шрифта
X++: public void setNamedRangeBorder(Bookmark _bookmark, int _top = 1, int _left = 1, int _right = 1, int _bottom = 1) { DocumentFormat.OpenXml.Spreadsheet.TopBorder topBorder, newTopBorder; DocumentFormat.OpenXml.Spreadsheet.LeftBorder leftBorder, newleftBorder; DocumentFormat.OpenXml.Spreadsheet.RightBorder rightBorder, newrightBorder; DocumentFormat.OpenXml.Spreadsheet.BottomBorder bottomBorder, newBottomBorder; DocumentFormat.OpenXml.Spreadsheet.Border border, newBorder; DocumentFormat.OpenXml.Spreadsheet.Borders borders; DocumentFormat.OpenXml.Spreadsheet.CellFormats formats; DocumentFormat.OpenXml.Spreadsheet.CellFormat format, newFormat; DocumentFormat.OpenXml.Spreadsheet.Cell cell; DocumentFormat.OpenXml.OpenXmlElementList elementList; System.Collections.IEnumerator enumerator; int fromRow; int fromCol; int toRow; int toCol; int styleIdx; int borderIdx; int curIdx; str worksheetName; container con; if(!this.definedNames().exists([_bookmark, #localSheetIdUndefined])) { throw error(strFmt("@GLS64283", _bookmark)); } con = this.parseBookmark(_bookmark); worksheetName = conPeek(con, 1); fromRow = conPeek(con, 2); fromCol = conPeek(con, 3); toRow = conPeek(con, 4); toCol = conPeek(con, 5); if(templateMode) { cell = this.getWorksheet(worksheetName, true).rowTemplate(fromRow).cell(fromCol).cell(); styleIdx = this.getWorksheet(worksheetName, true).rowTemplate(fromRow).cell(fromCol).styleIndex(); } else { cell = this.getWorksheet(worksheetName, true).row(fromRow).cell(fromCol).cell(); styleIdx = this.getWorksheet(worksheetName, true).row(fromRow).cell(fromCol).styleIndex(); } format = this.getCellXfById(styleIdx); borderIdx = OXML_RU::getUInt32Value(format.get_BorderId()); stylesPart = workbookPart.get_WorkbookStylesPart(); styleSheet = stylesPart.get_Stylesheet(); borders = styleSheet.get_Borders(); elementList = borders.get_ChildElements(); enumerator = elementList.GetEnumerator(); while(enumerator.MoveNext()) { border = enumerator.get_Current(); if(curIdx == borderIdx) { break; } curIdx++; } topBorder = border.get_TopBorder(); leftBorder = border.get_LeftBorder(); rightBorder = border.get_RightBorder(); bottomBorder = border.get_BottomBorder(); newTopBorder = topBorder.Clone(); newleftBorder = leftBorder.Clone(); newrightBorder = rightBorder.Clone(); newBottomBorder = bottomBorder.Clone(); newTopBorder.set_Style(OXML_RU::setInt32Value(_top)); newLeftBorder.set_Style(OXML_RU::setInt32Value(_left)); newRightBorder.set_Style(OXML_RU::setInt32Value(_right)); newBottomBorder.set_Style(OXML_RU::setInt32Value(_bottom)); newBorder = border.Clone(); newBorder.set_TopBorder(newTopBorder); newBorder.set_LeftBorder(newLeftBorder); newBorder.set_RightBorder(newRightBorder); newBorder.set_BottomBorder(newBottomBorder); OXML_RU::appendChild(borders, newBorder); newFormat = format.Clone(); newFormat.set_BorderId(borders.get_Count()); borders.set_Count(OXML_RU::setUInt32Value(OXML_RU::getUInt32Value(borders.get_Count()) + 1)); formats = styleSheet.get_CellFormats(); OXML_RU::appendChild(formats, newFormat); cell.set_StyleIndex(formats.get_Count()); formats.set_Count(OXML_RU::setUInt32Value(OXML_RU::getUInt32Value(formats.get_Count()) + 1)); |
|
19.05.2022, 14:24 | #4 |
Участник
|
Удалось найти ISO по OpenXML, если кому надо
https://github.com/python-openxml/py...EC-29500-1.pdf |
|
|
За это сообщение автора поблагодарили: DarkSpirit22 (1). |