0
A
回答
-1
我有一個類似的問題,我發現檢查,更改或刪除單元格或範圍的條件格式的唯一方法是查看openxml規範。條件格式存儲在工作表中,範圍在屬性sqref下。所以你可以編輯該範圍或添加一個新的。
例如:
DIM p As New ExcelPackage(New FileInfo(ExlReportPath), True)
Dim ws As ExcelWorksheet = p.Workbook.Worksheets(ExlSheetName)
「--Find節點(在我的情況1) 「工作表」,查找所有子節點 「conditionalFormatting」(5至11日在我的測試)
Print.Debug(ws.WorksheetXml.ChildNodes(1).ChildNodes(5).Name)
' - 您可以:conditionalFormatting
' --Now您可以檢查的範圍:
Print.Debug(ws.WorksheetXml.ChildNodes(1).ChildNodes(5).Attributes("sqref").Value)
「--Will給你,這個格式適用於例如小區地址:‘D11:D15’ 」 - 您可以更改刪除或添加新的範圍,如果你想,下面我補充F11:F15
ws.WorksheetXml.ChildNodes(1).ChildNodes(5).Attributes("sqref").Value="D11:D15 F11:F15"
「 - 您可以檢查在InnerXml也是規則本身...
如果需要的標記,谷歌沃特麪包車Vugt的更多細節,‘開放XML的標記說明’。我發現它很有用,完整的文檔在線(免費)。
如果您發現更簡單的方法,請發佈它。
Regards
1
我找到了解決方案。我沒有在所有formattingRuleTypes上測試它。 (目前只需要其中的2個) 在我的應用程序中,我爲每個工作表有1個模板行。
var formatList = fromSheet.ConditionalFormatting.ToList();
foreach (var cf in formatList)
{
// sourceRow is the row containing the formatting
if (cf.Address.Start.Row == sourceRow)
{
IExcelConditionalFormattingRule rule = null;
switch (cf.Type)
{
case OfficeOpenXml.ConditionalFormatting.eExcelConditionalFormattingRuleType.GreaterThan:
rule = dest.ConditionalFormatting.AddGreaterThan();
break;
case OfficeOpenXml.ConditionalFormatting.eExcelConditionalFormattingRuleType.GreaterThanOrEqual:
rule = dest.ConditionalFormatting.AddGreaterThanOrEqual();
break;
case OfficeOpenXml.ConditionalFormatting.eExcelConditionalFormattingRuleType.LessThan:
rule = dest.ConditionalFormatting.AddLessThan();
break;
case OfficeOpenXml.ConditionalFormatting.eExcelConditionalFormattingRuleType.LessThanOrEqual:
rule = dest.ConditionalFormatting.AddLessThanOrEqual();
break;
default:
break;
}
rule.Style.Fill = cf.Style.Fill;
rule.Style.Border = cf.Style.Border;
rule.Style.Font = cf.Style.Font;
rule.Style.NumberFormat = cf.Style.NumberFormat;
// I have no clue why the Formula property is not included in the IExcelConditionalFormattingRule interface. So I needed to cast this.
((ExcelConditionalFormattingRule)rule).Formula = ((ExcelConditionalFormattingRule)cf).Formula;
((ExcelConditionalFormattingRule)rule).Formula2 = ((ExcelConditionalFormattingRule)cf).Formula2;
// Calculate the new address for the formatting. This will be different in your case
var adr = new ExcelAddress(dest.Start.Row , cf.Address.Start.Column -1 , dest.Start.Row, cf.Address.Start.Column -1 + cf.Address.Columns -1);
rule.Address = adr;
我不知道爲什麼Formula屬性不包含在IExcelConditionalFormattingRule接口中。所以我需要投這個。
相關問題
- 1. 更改範圍的條件格式化
- 2. 條件格式不工作範圍
- 3. 範圍與多個條件
- 4. 與條件對象範圍
- 5. 的範圍與條件
- 6. 刪除條件格式的空白與範圍
- 7. 跳過將條件格式化顏色從一個範圍複製到另一個範圍的白色VBA Excel
- 8. 應用條件格式的範圍,但只有單元格格WHERE條件真
- 9. 複製Excel單元格的格式到範圍很慢
- 10. 複製單元格範圍x次
- 11. Excel條件格式(範圍vs單個單元格)
- 12. Google表格腳本更新條件格式範圍
- 13. 複製範圍內排除範圍
- 14. 將Excel條件格式公式調整爲選定範圍
- 15. Google表格 - 使用其他範圍的條件查詢範圍
- 16. 複製範圍與VBA到剪貼板
- 17. Excel Vba條件格式複製
- 18. 動態範圍的複製公式
- 19. Rails條件範圍
- 20. yii addBetween條件範圍與外部範圍
- 21. VBA - 範圍的格式複製到陣列
- 22. 如何複製和粘貼範圍,包括格式和列寬
- 23. 如何複製office.js中的範圍格式?
- 24. 將公式複製到範圍。谷歌電子表格
- 25. 以條件格式複製前一個單元格的格式
- 26. 將範圍複製到具有條件的新工作簿
- 27. 有條件複製兩個表SQL Server 2008的範圍
- 28. 根據條件複製和粘貼範圍
- 29. 計數Filterd範圍與乘法條件
- 30. Excel VBA:範圍與條件匹配