热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用npoi导出可编辑的word柱状图,仅限于office2007

publicstaticNPOI.XWPF.UserModel.XWPFDocumentCreatebar(Stringcountent,Dictionary<String,
 public static NPOI.XWPF.UserModel.XWPFDocument Createbar(String countent,Dictionary> datas, IList legend, XWPFDocument m_Docx, ST_LegendPos legendLocal, int w, int h,  String title)
        {


            //页面设置
            //A4:W=11906,h=16838
            //CT_SectPr m_SectPr = m_Docx.Document.body.AddNewSectPr();
            //m_Docx.Document.body.sectPr = new CT_SectPr();
            //CT_SectPr m_SectPr = m_Docx.Document.body.sectPr;
            //页面设置A4横向
            //m_SectPr.pgSz.w = (ulong)16838;
            //m_SectPr.pgSz.h = (ulong)11906;


            //创建页脚
            //CT_Ftr m_ftr = new CT_Ftr();
            //m_ftr.AddNewP().AddNewR().AddNewT().Value = "fff";//页脚内容
            //创建页脚关系(footern.xml)
            //XWPFRelation Frelation = XWPFRelation.FOOTER;
            //XWPFFooter m_f = (XWPFFooter)m_Docx.CreateRelationship(Frelation, XWPFFactory.GetInstance(), m_Docx.FooterList.Count + 1);
            //设置页脚
            //m_f.SetHeaderFooter(m_ftr);
            //CT_HdrFtrRef m_HdrFtr = m_SectPr.AddNewFooterReference();
            //m_HdrFtr.type = ST_HdrFtr.@default;
            //m_HdrFtr.id = m_f.GetPackageRelationship().Id;


            //创建页眉
            //CT_Hdr m_Hdr = new CT_Hdr();
            //m_Hdr.AddNewP().AddNewR().AddNewT().Value = "hhh";//页眉内容
            //创建页眉关系(headern.xml)
            //XWPFRelation Hrelation = XWPFRelation.HEADER;
           // XWPFHeader m_h = (XWPFHeader)m_Docx.CreateRelationship(Hrelation, XWPFFactory.GetInstance(), m_Docx.HeaderList.Count + 1);
            //设置页眉
            //m_h.SetHeaderFooter(m_Hdr);
            //m_HdrFtr = m_SectPr.AddNewHeaderReference();
            //m_HdrFtr.type = ST_HdrFtr.@default;
            //m_HdrFtr.id = m_h.GetPackageRelationship().Id;




            //插入柱状图图表
            //插入xlsx
            //创建xlsx
            XSSFWorkbook workbook = new XSSFWorkbook();


            //创建表单1(柱状图)
            ISheet sheet = workbook.CreateSheet("Sheet1");
            //5、表单1柱状图数据
            //     系列1	系列2 系列3
            //类别1 4.3  2.4   2
            //类别2 2.5  4.4   2
            //类别3 3.5  1.8   3
            //类别4 4.5  2.8   5




         


            IRow row = sheet.CreateRow(0);
            ICell cell = row.CreateCell(0);


          
            for (int i = 0; i ();
            NPOI.OpenXmlFormats.Dml.CT_TextParagraph charttp = new NPOI.OpenXmlFormats.Dml.CT_TextParagraph();
            charttp.AddNewPPr().defRPr = new NPOI.OpenXmlFormats.Dml.CT_TextCharacterProperties();
            NPOI.OpenXmlFormats.Dml.CT_RegularTextRun r = charttp.AddNewR();
            r.rPr = new NPOI.OpenXmlFormats.Dml.CT_TextCharacterProperties();
            r.rPr.lang = "zh-CN";
            r.rPr.altLang = "en-US";
            r.t = title;
            m_chart.title.tx.rich.p.Add(charttp);


            m_chart.title.overlay = new CT_Boolean();
            m_chart.title.overlay.val = 0;
            m_chart.autoTitleDeleted = new CT_Boolean();
            m_chart.autoTitleDeleted.val = 0;


            m_chart.plotArea = new CT_PlotArea();
            m_chart.plotArea.AddNewLayout();
            m_chart.plotArea.barChart = new List();
            CT_NumVal m_barvalpt = new CT_NumVal();




            CT_BarSer m_barser = new CT_BarSer();


            CT_StrVal m_barpt = new CT_StrVal();
            CT_BarChart m_barchart = new CT_BarChart();


            


                 m_barchart = new CT_BarChart();
                m_barchart.barDir = new CT_BarDir();
                m_barchart.barDir.val = ST_BarDir.col;
                m_barchart.grouping = new CT_BarGrouping();
                m_barchart.grouping.val = ST_BarGrouping.clustered;
                m_barchart.ser = new List();




            for (int i = 0; i ();
                m_barpt = new CT_StrVal();
                m_barpt.idx = 0;
                m_barpt.v = legend[i];
                m_barser.tx.strRef.strCache.pt.Add(m_barpt);


                //分类标题显示
                m_barser.invertIfNegative = new CT_Boolean();
                m_barser.invertIfNegative.val = 0;


                m_barser.cat = new CT_AxDataSource();
                m_barser.cat.strRef = new CT_StrRef();
                m_barser.cat.strRef.f = "Sheet1!$A$2:$A$5";
                m_barser.cat.strRef.strCache = new CT_StrData();
                m_barser.cat.strRef.strCache.ptCount = new CT_UnsignedInt();
                m_barser.cat.strRef.strCache.ptCount.val = 4;
                m_barser.cat.strRef.strCache.pt = new List();




                    for (int k = 0; k ();




                for (int m = 0; m 
		    
		    
            */
            CT_DTable cT_DTable = new CT_DTable();


            CT_Boolean ct_Boolean = new CT_Boolean();
            ct_Boolean.val = 1;
            cT_DTable.showHorzBorder = ct_Boolean;
            cT_DTable.showVertBorder = ct_Boolean;
            cT_DTable.showOutline = cT_Boolean;
            cT_DTable.showKeys = cT_Boolean;
            m_chart.plotArea.dTable = cT_DTable;


            //柱图北背景颜色,还有问题


            CT_ShapeProperties cT_ShapeProperties = new CT_ShapeProperties();


            NPOI.OpenXmlFormats.Dml.CT_SolidColorFillProperties cT_SolidColorFillProperties = new NPOI.OpenXmlFormats.Dml.CT_SolidColorFillProperties();


            NPOI.OpenXmlFormats.Dml.CT_SRgbColor cT_SRgbColor = new NPOI.OpenXmlFormats.Dml.CT_SRgbColor();


            cT_SRgbColor.val = System.Text.Encoding.UTF8.GetBytes("F79646");


            
            List  ItemsElementName = new List();


            ItemsElementName.Add(NPOI.OpenXmlFormats.Dml.EG_ColorTransform.alpha);
            ItemsElementName.Add(NPOI.OpenXmlFormats.Dml.EG_ColorTransform.lumMod);
            ItemsElementName.Add(NPOI.OpenXmlFormats.Dml.EG_ColorTransform.lumOff);
            cT_SRgbColor.ItemsElementName = ItemsElementName;




            cT_SolidColorFillProperties.srgbClr = cT_SRgbColor;




            cT_ShapeProperties.solidFill = cT_SolidColorFillProperties;


            //m_chart.plotArea.spPr = cT_ShapeProperties;










            m_barchart.axId = new List();
            CT_UnsignedInt m_axId = new CT_UnsignedInt();
            m_axId.val = 57733120;
            m_barchart.axId.Add(m_axId);
            m_axId = new CT_UnsignedInt();
            m_axId.val = 57734656;
            m_barchart.axId.Add(m_axId);


            m_chart.plotArea.barChart.Add(m_barchart);


           


            m_chart.plotArea.catAx = new List();
            CT_CatAx m_catAx = new CT_CatAx();
            m_catAx.axId = new CT_UnsignedInt();
            m_catAx.axId.val = 57733120;
            m_catAx.scaling = new CT_Scaling();
            m_catAx.scaling.orientation = new CT_Orientation();
            m_catAx.scaling.orientation.val = ST_Orientation.minMax;
            m_catAx.delete = new CT_Boolean();//分类标题
            m_catAx.delete.val = 0;
            m_catAx.axPos = new CT_AxPos();
            m_catAx.axPos.val = ST_AxPos.b;
            m_catAx.majorTickMark = new CT_TickMark();
            m_catAx.majorTickMark.val = ST_TickMark.none;
            m_catAx.minorTickMark = new CT_TickMark();
            m_catAx.minorTickMark.val = ST_TickMark.none;
            m_catAx.tickLblPos = new CT_TickLblPos();
            m_catAx.tickLblPos.val = ST_TickLblPos.nextTo;
            m_catAx.crossAx = new CT_UnsignedInt();
            m_catAx.crossAx.val = 57733120;
            m_catAx.crosses = new CT_Crosses();
            m_catAx.crosses.val = ST_Crosses.autoZero;
            m_catAx.auto = new CT_Boolean();
            m_catAx.auto.val = 0;
            m_catAx.lblAlgn = new CT_LblAlgn();
            m_catAx.lblAlgn.val = ST_LblAlgn.ctr;
            m_catAx.lblOffset = new CT_LblOffset();
            m_catAx.lblOffset.val = 100;
            m_catAx.noMultiLvlLbl = new CT_Boolean();
            m_catAx.noMultiLvlLbl.val = 100;
           
            m_chart.plotArea.catAx.Add(m_catAx);


            m_chart.plotArea.valAx = new List();
            CT_ValAx m_valAx = new CT_ValAx();
            m_valAx.axId = new CT_UnsignedInt();
            m_valAx.axId.val = 57734656;
            m_valAx.scaling = new CT_Scaling();
            m_valAx.scaling.orientation = new CT_Orientation();
            m_valAx.scaling.orientation.val = ST_Orientation.minMax;
            m_valAx.delete = new CT_Boolean();
            m_valAx.delete.val = 1;
            m_valAx.axPos = new CT_AxPos();
            m_valAx.axPos.val = ST_AxPos.l;
            m_valAx.numFmt = new NPOI.OpenXmlFormats.Dml.Chart.CT_NumFmt();
            m_valAx.numFmt.formatCode = "General";
            m_valAx.numFmt.sourceLinked = true;
            m_valAx.majorTickMark = new CT_TickMark();
            m_valAx.majorTickMark.val = ST_TickMark.none;
            m_valAx.minorTickMark = new CT_TickMark();
            m_valAx.minorTickMark.val = ST_TickMark.none;
            m_valAx.tickLblPos = new CT_TickLblPos();
            m_valAx.tickLblPos.val = ST_TickLblPos.nextTo;
            m_valAx.crossAx = new CT_UnsignedInt();
            m_valAx.crossAx.val = 57733120;
            m_valAx.crosses = new CT_Crosses();
            m_valAx.crosses.val = ST_Crosses.autoZero;
            m_valAx.crossBetween = new CT_CrossBetween();
            m_valAx.crossBetween.val = ST_CrossBetween.between;
            m_chart.plotArea.valAx.Add(m_valAx);










            //图例位置
            m_chart.legend = new CT_Legend();
            m_chart.legend.legendPos = new CT_LegendPos();
            m_chart.legend.legendPos.val = legendLocal; //在上方
            m_chart.legend.overlay = new CT_Boolean();
            m_chart.legend.overlay.val = 0;
            m_chart.plotVisOnly= new CT_Boolean();
            m_chart.plotVisOnly.val = 1;
            m_chart.dispBlanksAs = new CT_DispBlanksAs();
            m_chart.dispBlanksAs.val = ST_DispBlanksAs.gap;
            m_chart.showDLblsOverMax = new CT_Boolean();
            m_chart.showDLblsOverMax.val = 0;


         


            XWPFParagraph gp = m_Docx.CreateParagraph();
            XWPFRun gr = gp.CreateRun();
            
            gr.AddChartSpace(new XSSFWorkbook(new MemoryStream(bxlsxData)), ctbarchartspace, w, h);
            
            XWPFParagraph Textgp = m_Docx.CreateParagraph();
          


            XWPFRun Textgr = gp.CreateRun();
            XWPFStyles m_styles = m_Docx.CreateStyles();






            // Textgr.SetTextPosition(2);




            CT_RPr rpr3 = Textgr.GetCTR().AddNewRPr();
            CT_Fonts rfonts3 = rpr3.AddNewRFonts();
            rfonts3.ascii = "仿宋_GB2312";
            rfonts3.eastAsia = "仿宋_GB2312";
            rpr3.AddNewSz().val = (ulong)30;//1号字体
            rpr3.AddNewSzCs().val = (ulong)30;




            Textgr.SetText(countent);
           
            return m_Docx;
        }


推荐阅读
  • 本题库精选了Java核心知识点的练习题,旨在帮助学习者巩固和检验对Java理论基础的掌握。其中,选择题部分涵盖了访问控制权限等关键概念,例如,Java语言中仅允许子类或同一包内的类访问的访问权限为protected。此外,题库还包括其他重要知识点,如异常处理、多线程、集合框架等,全面覆盖Java编程的核心内容。 ... [详细]
  • JVM参数设置与命令行工具详解
    JVM参数配置与命令行工具的深入解析旨在优化系统性能,通过合理设置JVM参数,确保在高吞吐量的前提下,有效减少垃圾回收(GC)的频率,进而降低系统停顿时间,提升服务的稳定性和响应速度。此外,本文还将详细介绍常用的JVM命令行工具,帮助开发者更好地监控和调优JVM运行状态。 ... [详细]
  • 深入解析 iOS Objective-C 中的对象内存对齐规则及其优化策略
    深入解析 iOS Objective-C 中的对象内存对齐规则及其优化策略 ... [详细]
  • 在探讨 AS3 中的数据深度复制技术时,本文详细介绍了实现数据深度克隆的有效方法。通过对比多种方案,最终确定了一种高效且可靠的实现方式,所有代码均来源于公开资源,确保了方法的实用性和可操作性。 ... [详细]
  • 本文提供了 RabbitMQ 3.7 的快速上手指南,详细介绍了环境搭建、生产者和消费者的配置与使用。通过官方教程的指引,读者可以轻松完成初步测试和实践,快速掌握 RabbitMQ 的核心功能和基本操作。 ... [详细]
  • 深入解析JWT的实现与应用
    本文深入探讨了JSON Web Token (JWT) 的实现机制及其应用场景。JWT 是一种基于 RFC 7519 标准的开放性认证协议,用于在各方之间安全地传输信息。文章详细分析了 JWT 的结构、生成和验证过程,并讨论了其在现代 Web 应用中的实际应用案例,为开发者提供了全面的理解和实践指导。 ... [详细]
  • 本文深入探讨了 MXOTDLL.dll 在 C# 环境中的应用与优化策略。针对近期公司从某生物技术供应商采购的指纹识别设备,该设备提供的 DLL 文件是用 C 语言编写的。为了更好地集成到现有的 C# 系统中,我们对原生的 C 语言 DLL 进行了封装,并利用 C# 的互操作性功能实现了高效调用。此外,文章还详细分析了在实际应用中可能遇到的性能瓶颈,并提出了一系列优化措施,以确保系统的稳定性和高效运行。 ... [详细]
  • 如何在 Java LinkedHashMap 中高效地提取首个或末尾的键值对? ... [详细]
  • C#编程指南:实现列表与WPF数据网格的高效绑定方法 ... [详细]
  • 本文将介绍一种扩展的ASP.NET MVC三层架构框架,并通过使用StructureMap实现依赖注入,以降低代码间的耦合度。该方法不仅能够提高代码的可维护性和可测试性,还能增强系统的灵活性和扩展性。通过具体实践案例,详细阐述了如何在实际开发中有效应用这一技术。 ... [详细]
  • 在使用群报数小程序进行高效接龙与统计时,可以通过创建 `LinkedList` 对象并利用 `for` 循环生成指定数量的 `Person` 对象,为每个人员分配唯一的编号,并将其添加到 `LinkedList` 集合中。这一过程确保了数据的有序性和高效管理,便于后续的接龙和统计操作。此外,该小程序还支持实时更新和查看参与人员的状态,进一步提升了活动组织的便利性和准确性。 ... [详细]
  • 本文详细解析了 MySQL 5.7.20 版本中二进制日志(binlog)崩溃恢复机制的工作流程。假设使用 InnoDB 存储引擎,并且启用了 `sync_binlog=1` 配置,文章深入探讨了在系统崩溃后如何通过 binlog 进行数据恢复,确保数据的一致性和完整性。 ... [详细]
  • Java 8 引入了 Stream API,这一新特性极大地增强了集合数据的处理能力。通过 Stream API,开发者可以更加高效、简洁地进行集合数据的遍历、过滤和转换操作。本文将详细解析 Stream API 的核心概念和常见用法,帮助读者更好地理解和应用这一强大的工具。 ... [详细]
  • 在单个图表中实现饼图与条形图的精准对齐 ... [详细]
  • 在开发Xamarin.Forms应用程序时,遇到了使用Entity Framework Core 3.0访问SQLite数据库时 `Database.MigrateAsync` 方法调用的问题。本文详细探讨了该问题的根源,并提供了一种有效的解决方案,确保数据库迁移能够顺利执行。此外,还介绍了如何配置和优化EF Core以提高应用性能和稳定性。 ... [详细]
author-avatar
Danny邓lovestars
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有