获取Excel打印预览的宽度

按微软的 https://docs.microsoft.com/zh-cn/office/vba/api/excel.xlpapersize?view=api-js-preview 信息,

 

 

Name Value Description Description 计算长 计算宽
xlPaper10x14 16 10 in.   14 in. 254 355.6
xlPaper11x17 17 11 in.   17 in. 279.4 431.8
xlPaperA3 8 297 mm   420 mm 297 420
xlPaperA4 9 210 mm   297 mm 210 297
xlPaperA4Small 10 210 mm   297 mm 210 297
xlPaperA5 11 148 mm   210 mm 148 210
xlPaperB4 12 250 mm   354 mm 250 354
xlPaperB5 13 148 mm   210 mm 148 210
xlPaperCsheet 24 C size sheet      
xlPaperDsheet 25 D size sheet      
xlPaperEnvelope10 20 4-1/8 in.   9-1/2 in. 104.775 241.30
xlPaperEnvelope11 21 4-1/2 in.   10-3/8 in. 114.30 263.525
xlPaperEnvelope12 22 4-1/2 in.   11 in. 114.30 279.40
xlPaperEnvelope14 23 5 in.   11-1/2 in. 127 292.10
xlPaperEnvelope9 19 3-7/8 in.   8-7/8 in. 3.875 8.875
xlPaperEnvelopeB4 33 250 mm   353 mm 250 353
xlPaperEnvelopeB5 34 176 mm   250 mm 176 250
xlPaperEnvelopeB6 35 176 mm   125 mm 176 125
xlPaperEnvelopeC3 29 324 mm   458 mm 324 458
xlPaperEnvelopeC4 30 229 mm   324 mm 229 324
xlPaperEnvelopeC5 28 162 mm   229 mm 162 229
xlPaperEnvelopeC6 31 114 mm   162 mm 114 162
xlPaperEnvelopeC65 32 114 mm   229 mm 114 229
xlPaperEnvelopeDL 27 110 mm   220 mm 110 220
xlPaperEnvelopeItaly 36 110 mm   230 mm 110 230
xlPaperEnvelopeMonarch 37 3-7/8 in.   7-1/2 in. 98.425 190.500
xlPaperEnvelopePersonal 38 3-5/8 in.   6-1/2 in. 92.075 165.100
xlPaperEsheet 26 E size sheet      
xlPaperExecutive 7 7-1/2 in.   10-1/2 in. 190.500 266.700
xlPaperFanfoldLegalGerman 41 8-1/2 in.   13 in. 215.900 330.200
xlPaperFanfoldStdGerman 40 8-1/2 in.   13 in. 215.900 330.200
xlPaperFanfoldUS 39 14-7/8 in.   11 in. 377.825 279.400
xlPaperFolio 14 8-1/2 in.   13 in. 215.900 330.200
xlPaperLedger 4 17 in.   11 in. 431.800 279.400
xlPaperLegal 5 8-1/2 in.   14 in. 215.900 355.600
xlPaperLetter 1 8-1/2 in.   11 in. 215.900 279.400
xlPaperLetterSmall 2 8-1/2 in.   11 in. 215.900 279.400
xlPaperNote 18 8-1/2 in.   11 in. 215.900 279.400
xlPaperQuarto 15 215 mm   275 mm 215.000 275.000
xlPaperStatement 6 5-1/2 in.   8-1/2 in. 139.700 215.900
xlPaperTabloid 3 11 in.   17 in. 279.400 431.800
xlPaperUser 256 User-defined      
           

 

 

 

        public class PageSizeInfo
        {
            public Microsoft.Office.Interop.Excel.XlPaperSize Paper { get; set; }
            public double Height { get; set; }
            public double Width { get; set; }
            public PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize Paper,double Height,double Width)
            {
                this.Paper = Paper;
                this.Height = Height;
                this.Width = Width;
            }
            static public PageSizeInfo[] AllPageSizeType = new PageSizeInfo[]
            {                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaper10x14,254,355.6),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaper11x17,279.4,431.8),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperA3,297,420),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperA4,210,297),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperA4Small,210,297),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperA5,148,210),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperB4,250,354),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperB5,148,210),
                //new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperCsheet,,),
                //new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperDsheet,,),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperEnvelope10,104.775,241.3),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperEnvelope11,114.3,263.525),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperEnvelope12,114.3,279.4),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperEnvelope14,127,292.1),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperEnvelope9,3.875,8.875),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperEnvelopeB4,250,353),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperEnvelopeB5,176,250),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperEnvelopeB6,176,125),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperEnvelopeC3,324,458),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperEnvelopeC4,229,324),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperEnvelopeC5,162,229),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperEnvelopeC6,114,162),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperEnvelopeC65,114,229),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperEnvelopeDL,110,220),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperEnvelopeItaly,110,230),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperEnvelopeMonarch,98.425,190.5),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperEnvelopePersonal,92.075,165.1),
                //new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperEsheet,,),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperExecutive,190.5,266.7),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperFanfoldLegalGerman,215.9,330.2),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperFanfoldStdGerman,215.9,330.2),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperFanfoldUS,377.825,279.4),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperFolio,215.9,330.2),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperLedger,431.8,279.4),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperLegal,215.9,355.6),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperLetter,215.9,279.4),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperLetterSmall,215.9,279.4),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperNote,215.9,279.4),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperQuarto,215,275),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperStatement,139.7,215.9),
                new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperTabloid,279.4,431.8),
                //new PageSizeInfo(Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperUser,,),
            };
            static public Point GetSize(Microsoft.Office.Interop.Excel.XlPaperSize xlp)
            {
                foreach(var p in AllPageSizeType)
                {
                    if (p.Paper == xlp)
                        return new Point((int)p.Width, (int)p.Height);
                }
                return new Point(210, 297);
            }
        }

 

posted @ 2020-09-29 12:03  william1994  阅读(454)  收藏2(0