使用 JavaScript 通过 C++ 设置页面选项

设置页面选项

Aspose.Cells完全支持页面设置选项。本文介绍了如何使用Aspose.Cells设置页面选项,并显示了用于设置的代码示例:

Aspose.Cells 提供了一个类,Workbook,它代表一个 Microsoft Excel 文件。Workbook 类包含一个 worksheets 集合,允许访问 Excel 文件中的每个工作表。工作表由 Worksheet 类表示。

Worksheet 类提供 PageSetup 属性,用于设置工作表的页面布局选项。实际上,这个 PageSetup 属性是 PageSetup 类的对象,用于设置打印工作表的不同页面布局选项。PageSetup 类提供多种属性,用于设置页面布局,以下将介绍部分属性。

页面方向

可以使用 PageSetup 类的 orientation 属性将页面方向设置为纵向或横向。orientation 属性接受 PageOrientationType 枚举中的预定义值,具体如下:

页面方向类型 描述
Landscape 横向方向
Portrait 纵向方向
<!DOCTYPE html>
<html>
    <head>
        <title>Aspose.Cells Example - Page Orientation</title>
    </head>
    <body>
        <h1>Set Page Orientation Example</h1>
        <p>You may optionally select an existing Excel file to modify. If none is selected, a new workbook will be used.</p>
        <input type="file" id="fileInput" accept=".xls,.xlsx,.csv" />
        <button id="runExample">Run Example</button>
        <a id="downloadLink" style="display: none;">Download Result</a>
        <div id="result"></div>
    </body>

    <script src="aspose.cells.js.min.js"></script>
    <script type="text/javascript">
        const { Workbook, SaveFormat, PageOrientationType } = AsposeCells;

        AsposeCells.onReady({
            license: "/lic/aspose.cells.enc",
            fontPath: "/fonts/",
            fontList: [
                "arial.ttf",
                "NotoSansSC-Regular.ttf"
            ]
        }).then(() => {
            console.log("Aspose.Cells initialized");
        });

        document.getElementById('runExample').addEventListener('click', async () => {
            const fileInput = document.getElementById('fileInput');
            if (fileInput.files.length === 0) {
                // No file selected - will operate on a new workbook
                document.getElementById('result').innerHTML = '<p>No file selected. A new workbook will be created and modified.</p>';
            } else {
                document.getElementById('result').innerHTML = '<p>File selected. The workbook will be loaded and modified.</p>';
            }

            // Load workbook from selected file if provided, otherwise create a new one
            let workbook;
            if (fileInput.files.length) {
                const file = fileInput.files[0];
                const arrayBuffer = await file.arrayBuffer();
                workbook = new Workbook(new Uint8Array(arrayBuffer));
            } else {
                workbook = new Workbook();
            }

            // Access the first worksheet in the workbook
            const worksheet = workbook.worksheets.get(0);

            // Setting the orientation to Portrait (property assignment per getter/setter conversion)
            worksheet.pageSetup.orientation = PageOrientationType.Portrait;

            // Save the Workbook as Excel97To2003 (.xls)
            const outputData = workbook.save(SaveFormat.Excel97To2003);
            const blob = new Blob([outputData]);
            const downloadLink = document.getElementById('downloadLink');
            downloadLink.href = URL.createObjectURL(blob);
            downloadLink.download = 'PageOrientation_out.xls';
            downloadLink.style.display = 'block';
            downloadLink.textContent = 'Download Modified Excel File';

            document.getElementById('result').innerHTML = '<p style="color: green;">Orientation set to Portrait. Click the download link to get the modified file.</p>';
        });
    </script>
</html>

缩放因子

通过调整 zoom 属性的缩放比例,可以缩小或放大工作表的大小。

<!DOCTYPE html>
<html>
    <head>
        <title>Aspose.Cells Scaling Factor Example</title>
    </head>
    <body>
        <h1>Scaling Factor Example</h1>
        <p>Select an existing Excel file to modify or leave empty to create a new workbook.</p>
        <input type="file" id="fileInput" accept=".xls,.xlsx,.csv" />
        <button id="runExample">Set Scaling Factor to 100</button>
        <a id="downloadLink" style="display: none;">Download Result</a>
        <div id="result"></div>
    </body>

    <script src="aspose.cells.js.min.js"></script>
    <script type="text/javascript">
        const { Workbook, SaveFormat } = AsposeCells;

        AsposeCells.onReady({
            license: "/lic/aspose.cells.enc",
            fontPath: "/fonts/",
            fontList: [
                "arial.ttf",
                "NotoSansSC-Regular.ttf"
            ]
        }).then(() => {
            console.log("Aspose.Cells initialized");
        });

        document.getElementById('runExample').addEventListener('click', async () => {
            const fileInput = document.getElementById('fileInput');
            let workbook;

            if (fileInput.files && fileInput.files.length) {
                const file = fileInput.files[0];
                const arrayBuffer = await file.arrayBuffer();
                workbook = new Workbook(new Uint8Array(arrayBuffer));
            } else {
                // Create a new empty workbook
                workbook = new Workbook();
            }

            // Accessing the first worksheet in the Excel file
            const worksheet = workbook.worksheets.get(0);

            // Setting the scaling factor to 100
            worksheet.pageSetup.zoom = 100;

            // Saving the workbook and preparing download link
            const outputData = workbook.save(SaveFormat.Excel97To2003);
            const blob = new Blob([outputData]);
            const downloadLink = document.getElementById('downloadLink');
            downloadLink.href = URL.createObjectURL(blob);
            downloadLink.download = 'ScalingFactor_out.xls';
            downloadLink.style.display = 'block';
            downloadLink.textContent = 'Download Modified Excel File';

            document.getElementById('result').innerHTML = '<p style="color: green;">Scaling factor set to 100. Click the download link to get the modified file.</p>';
        });
    </script>
</html>

适合页码选项

若要将工作表内容适配到特定的页数,可以使用 PageSetup 类的 fitToPagesTallfitToPagesWide 属性。这些属性也用于缩放工作表。

<!DOCTYPE html>
<html>
    <head>
        <title>Aspose.Cells Example</title>
    </head>
    <body>
        <h1>Fit To Pages Example</h1>
        <input type="file" id="fileInput" accept=".xls,.xlsx,.csv" />
        <button id="runExample">Run Example</button>
        <a id="downloadLink" style="display: none;">Download Result</a>
        <div id="result"></div>
    </body>

    <script src="aspose.cells.js.min.js"></script>
    <script type="text/javascript">
        const { Workbook, SaveFormat } = AsposeCells;

        AsposeCells.onReady({
            license: "/lic/aspose.cells.enc",
            fontPath: "/fonts/",
            fontList: [
                "arial.ttf",
                "NotoSansSC-Regular.ttf"
            ]
        }).then(() => {
            console.log("Aspose.Cells initialized");
        });

        document.getElementById('runExample').addEventListener('click', async () => {
            const fileInput = document.getElementById('fileInput');

            if (!fileInput.files.length) {
                // No file selected: create a new workbook
                const workbook = new Workbook();

                // Accessing the first worksheet in the Excel file
                const worksheet = workbook.worksheets.get(0);

                // Setting the number of pages to which the length of the worksheet will be spanned
                worksheet.pageSetup.fitToPagesTall = 1;

                // Setting the number of pages to which the width of the worksheet will be spanned
                worksheet.pageSetup.fitToPagesWide = 1;

                // Saving the modified Excel file
                const outputData = workbook.save(SaveFormat.Excel97To2003);
                const blob = new Blob([outputData]);
                const downloadLink = document.getElementById('downloadLink');
                downloadLink.href = URL.createObjectURL(blob);
                downloadLink.download = 'FitToPagesOptions_out.xls';
                downloadLink.style.display = 'block';
                downloadLink.textContent = 'Download Excel File';

                document.getElementById('result').innerHTML = '<p style="color: green;">Operation completed successfully! Click the download link to get the modified file.</p>';
                return;
            }

            // If a file is selected, load it and apply the same operations
            const file = fileInput.files[0];
            const arrayBuffer = await file.arrayBuffer();
            const workbook = new Workbook(new Uint8Array(arrayBuffer));

            // Accessing the first worksheet in the Excel file
            const worksheet = workbook.worksheets.get(0);

            // Setting the number of pages to which the length of the worksheet will be spanned
            worksheet.pageSetup.fitToPagesTall = 1;

            // Setting the number of pages to which the width of the worksheet will be spanned
            worksheet.pageSetup.fitToPagesWide = 1;

            // Saving the modified Excel file
            const outputData = workbook.save(SaveFormat.Excel97To2003);
            const blob = new Blob([outputData]);
            const downloadLink = document.getElementById('downloadLink');
            downloadLink.href = URL.createObjectURL(blob);
            downloadLink.download = 'FitToPagesOptions_out.xls';
            downloadLink.style.display = 'block';
            downloadLink.textContent = 'Download Excel File';

            document.getElementById('result').innerHTML = '<p style="color: green;">Operation completed successfully! Click the download link to get the modified file.</p>';
        });
    </script>
</html>

纸张尺寸

使用 PageSetup 类的 paperSize 属性设置打印工作表的纸张大小。paperSize 属性接受 PaperSizeType 枚举中的预定义值,具体如下:

纸张尺寸类型 描述
PaperLetter Letter (8-1/2 in. x 11 in.)
PaperLetterSmall Letter Small (8-1/2 in. x 11 in.)
PaperTabloid Tabloid (11 in. x 17 in.)
PaperLedger Ledger (17 in. x 11 in.)
PaperLegal Legal (8-1/2 in. x 14 in.)
PaperStatement Statement (5-1/2 in. x 8-1/2 in.)
PaperExecutive Executive (7-1/4 in. x 10-1/2 in.)
PaperA3 A3 (297 mm x 420 mm)
PaperA4 A4 (210 mm x 297 mm)
PaperA4Small A4 Small (210 mm x 297 mm)
PaperA5 A5 (148 mm x 210 mm)
PaperB4 JIS B4 (257 mm x 364 mm)
PaperB5 JIS B5 (182 mm x 257 mm)
PaperFolio Folio (8-1/2 in. x 13 in.)
PaperQuarto Quarto (215 mm x 275 mm)
Paper10x14 10 in. x 14 in.
Paper11x17 11 in. x 17 in.
PaperNote Note (8-1/2 in. x 11 in.)
PaperEnvelope9 Envelope #9 (3-7/8 in. x 8-7/8 in.)
PaperEnvelope10 Envelope #10 (4-1/8 in. x 9-1/2 in.)
PaperEnvelope11 Envelope #11 (4-1/2 in. x 10-3/8 in.)
PaperEnvelope12 Envelope #12 (4-1/2 in. x 11 in.)
PaperEnvelope14 Envelope #14 (5 in. x 11-1/2 in.)
PaperCSheet C size sheet
PaperDSheet D size sheet
PaperESheet E size sheet
PaperEnvelopeDL Envelope DL (110 mm x 220 mm)
PaperEnvelopeC5 Envelope C5 (162 mm x 229 mm)
PaperEnvelopeC3 Envelope C3 (324 mm x 458 mm)
PaperEnvelopeC4 Envelope C4 (229 mm x 324 mm)
PaperEnvelopeC6  Envelope C6 (114 mm x 162 mm)
PaperEnvelopeC65 Envelope C65 (114 mm x 229 mm)
PaperEnvelopeB4 Envelope B4 (250 mm x 353 mm)
PaperEnvelopeB5 Envelope B5 (176 mm x 250 mm)
PaperEnvelopeB6 Envelope B6 (176 mm x 125 mm)
PaperEnvelopeItaly Envelope Italy (110 mm x 230 mm)
PaperEnvelopeMonarch Envelope Monarch (3-7/8 in. x 7-1/2 in.)
PaperEnvelopePersonal Envelope (3-5/8 in. x 6-1/2 in.)
PaperFanfoldUS U.S. Standard Fanfold (14-7/8 in. x 11 in.)
PaperFanfoldStdGerman German Standard Fanfold (8-1/2 in. x 12 in.)
PaperFanfoldLegalGerman German Legal Fanfold (8-1/2 in. x 13 in.)
PaperISOB4 B4 (ISO) 250 x 353 mm
PaperJapanesePostcard Japanese Postcard (100mm x 148mm)
Paper9x11 9 in. x 11 in.
Paper10x11 10 in. x 11 in.
Paper15x11 15 in. x 11 in.
PaperEnvelopeInvite Envelope Invite(220mm x 220mm)
PaperLetterExtra US Letter Extra 9 \275 x 12 in
PaperLegalExtra US Legal Extra 9 \275 x 15 in
PaperTabloidExtra US Tabloid Extra 11.69 x 18 in
PaperA4Extra A4 Extra 9.27 x 12.69 in
PaperLetterTransverse Letter Transverse 8 \275 x 11 in
PaperA4Transverse A4 Transverse 210 x 297 mm
PaperLetterExtraTransverse Letter Extra Transverse 9\275 x 12 in
PaperSuperA SuperA/SuperA/A4 227 x 356 mm
PaperSuperB SuperB/SuperB/A3 305 x 487 mm
PaperLetterPlus US Letter Plus 8.5 x 12.69 in
PaperA4Plus A4 Plus 210 x 330 mm
PaperA5Transverse A5 Transverse 148 x 210 mm
PaperJISB5Transverse B5 (JIS) Transverse 182 x 257 mm
PaperA3Extra A3 Extra 322 x 445 mm
PaperA5Extra A5 Extra 174 x 235 mm
PaperISOB5Extra B5 (ISO) Extra 201 x 276 mm
PaperA2 A2 420 x 594 mm
PaperA3Transverse A3 Transverse 297 x 420 mm
PaperA3ExtraTransverse A3 Extra Transverse 322 x 445 mm
PaperJapaneseDoublePostcard Japanese Double Postcard 200 x 148 mm
PaperA6 A6 105 x 148 mm
PaperJapaneseEnvelopeKaku2 Japanese Envelope Kaku #2
PaperJapaneseEnvelopeKaku3 Japanese Envelope Kaku #3
PaperJapaneseEnvelopeChou3 Japanese Envelope Chou #3
PaperJapaneseEnvelopeChou4 Japanese Envelope Chou #4
PaperLetterRotated 11in x 8.5in
PaperA3Rotated 420mm x 297mm
PaperA4Rotated 297mm x 210mm
PaperA5Rotated 210mm x 148mm
PaperJISB4Rotated B4 (JIS) Rotated 364 x 257 mm
PaperJISB5Rotated B5 (JIS) Rotated 257 x 182 mm
PaperJapanesePostcardRotated Japanese Postcard Rotated 148 x 100 mm
PaperJapaneseDoublePostcardRotated Double Japanese Postcard Rotated 148 x 200 mm
PaperA6Rotated A6 Rotated 148 x 105 mm
PaperJapaneseEnvelopeKaku2Rotated Japanese Envelope Kaku #2 Rotated
PaperJapaneseEnvelopeKaku3Rotated Japanese Envelope Kaku #3 Rotated
PaperJapaneseEnvelopeChou3Rotated Japanese Envelope Chou #3 Rotated
PaperJapaneseEnvelopeChou4Rotated Japanese Envelope Chou #4 Rotated
PaperJISB6 B6 (JIS) 128 x 182 mm
PaperJISB6Rotated B6 (JIS) Rotated 182 x 128 mm
Paper12x11 12 x 11 in
PaperJapaneseEnvelopeYou4 Japanese Envelope You #4
PaperJapaneseEnvelopeYou4Rotated Japanese Envelope You #4 Rotated
PaperPRC16K PRC 16K 146 x 215 mm
PaperPRC32K PRC 32K 97 x 151 mm
PaperPRCBig32K PRC 32K(Big) 97 x 151 mm
PaperPRCEnvelope1 PRC Envelope #1 102 x 165 mm
PaperPRCEnvelope2 PRC Envelope #2 102 x 176 mm
PaperPRCEnvelope3 PRC Envelope #3 125 x 176 mm
PaperPRCEnvelope4 PRC Envelope #4 110 x 208 mm
PaperPRCEnvelope5 PRC Envelope #5 110 x 220 mm
PaperPRCEnvelope6 PRC Envelope #6 120 x 230 mm
PaperPRCEnvelope7 PRC Envelope #7 160 x 230 mm
PaperPRCEnvelope8 PRC Envelope #8 120 x 309 mm
PaperPRCEnvelope9 PRC Envelope #9 229 x 324 mm
PaperPRCEnvelope10 PRC Envelope #10 324 x 458 mm
PaperPRC16KRotated PRC 16K Rotated
PaperPRC32KRotated PRC 32K Rotated
PaperPRCBig32KRotated PRC 32K(Big) Rotated
PaperPRCEnvelope1Rotated PRC Envelope #1 Rotated 165 x 102 mm
PaperPRCEnvelope2Rotated PRC Envelope #2 Rotated 176 x 102 mm
PaperPRCEnvelope3Rotated PRC Envelope #3 Rotated 176 x 125 mm
PaperPRCEnvelope4Rotated PRC Envelope #4 Rotated 208 x 110 mm
PaperPRCEnvelope5Rotated PRC Envelope #5 Rotated 220 x 110 mm
PaperPRCEnvelope6Rotated PRC Envelope #6 Rotated 230 x 120 mm
PaperPRCEnvelope7Rotated PRC Envelope #7 Rotated 230 x 160 mm
PaperPRCEnvelope8Rotated PRC Envelope #8 Rotated 309 x 120 mm
PaperPRCEnvelope9Rotated PRC Envelope #9 Rotated 324 x 229 mm
PaperPRCEnvelope10Rotated PRC Envelope #10 Rotated 458 x 324 mm
PaperB3 usual B3(13.9 x 19.7 in)
PaperBusinessCard Business Card(90mm x 55 mm)
PaperThermal Thermal(3 x 11 in)
Custom Represents the custom paper size.
<!DOCTYPE html>
<html>
    <head>
        <title>Aspose.Cells Example</title>
    </head>
    <body>
        <h1>Manage Paper Size Example</h1>
        <input type="file" id="fileInput" accept=".xls,.xlsx,.csv" />
        <button id="runExample">Run Example</button>
        <a id="downloadLink" style="display: none;">Download Result</a>
        <div id="result"></div>
    </body>

    <script src="aspose.cells.js.min.js"></script>
    <script type="text/javascript">
        const { Workbook, SaveFormat } = AsposeCells;

        AsposeCells.onReady({
            license: "/lic/aspose.cells.enc",
            fontPath: "/fonts/",
            fontList: [
                "arial.ttf",
                "NotoSansSC-Regular.ttf"
            ]
        }).then(() => {
            console.log("Aspose.Cells initialized");
        });

        document.getElementById('runExample').addEventListener('click', async () => {
            const fileInput = document.getElementById('fileInput');

            if (!fileInput.files.length) {
                // proceed with a new blank workbook if no file selected
            }

            // Instantiate or load Workbook
            let workbook;
            if (fileInput.files.length) {
                const file = fileInput.files[0];
                const arrayBuffer = await file.arrayBuffer();
                workbook = new Workbook(new Uint8Array(arrayBuffer));
            } else {
                workbook = new Workbook();
            }

            // Access the first worksheet in the Excel file
            const worksheet = workbook.worksheets.get(0);

            // Setting the paper size to A4
            worksheet.pageSetup.paperSize = AsposeCells.PaperSizeType.PaperA4;

            // Save the Workbook and provide download link
            const outputData = workbook.save(SaveFormat.Excel97To2003);
            const blob = new Blob([outputData]);
            const downloadLink = document.getElementById('downloadLink');
            downloadLink.href = URL.createObjectURL(blob);
            downloadLink.download = 'ManagePaperSize_out.xls';
            downloadLink.style.display = 'block';
            downloadLink.textContent = 'Download Excel File';

            document.getElementById('result').innerHTML = '<p style="color: green;">Paper size set to A4. Click the download link to save the file.</p>';
        });
    </script>
</html>

打印质量

将工作表的打印质量设置为使用 printQuality 属性。打印质量的测量单位为每英寸点数(DPI)。

<!DOCTYPE html>
<html>
    <head>
        <title>Set Print Quality Example</title>
    </head>
    <body>
        <h1>Set Print Quality Example</h1>
        <input type="file" id="fileInput" accept=".xls,.xlsx,.csv" />
        <button id="runExample">Run Example</button>
        <a id="downloadLink" style="display: none;">Download Result</a>
        <div id="result"></div>
    </body>

    <script src="aspose.cells.js.min.js"></script>
    <script type="text/javascript">
        const { Workbook, SaveFormat, Utils } = AsposeCells;

        AsposeCells.onReady({
            license: "/lic/aspose.cells.enc",
            fontPath: "/fonts/",
            fontList: [
                "arial.ttf",
                "NotoSansSC-Regular.ttf"
            ]
        }).then(() => {
            console.log("Aspose.Cells initialized");
        });

        document.getElementById('runExample').addEventListener('click', async () => {
            const fileInput = document.getElementById('fileInput');
            let workbook;

            if (fileInput.files.length) {
                const file = fileInput.files[0];
                const arrayBuffer = await file.arrayBuffer();
                workbook = new Workbook(new Uint8Array(arrayBuffer));
            } else {
                workbook = new Workbook();
            }

            const worksheet = workbook.worksheets.get(0);

            // Setting the print quality of the worksheet to 180 dpi
            worksheet.pageSetup.printQuality = 180;

            const outputData = workbook.save(SaveFormat.Excel97To2003);
            const blob = new Blob([outputData]);
            const downloadLink = document.getElementById('downloadLink');
            downloadLink.href = URL.createObjectURL(blob);
            downloadLink.download = 'SetPrintQuality_out.xls';
            downloadLink.style.display = 'block';
            downloadLink.textContent = 'Download Excel File';

            document.getElementById('result').innerHTML = '<p style="color: green;">Print quality set to 180 dpi. Click the download link to save the file.</p>';
        });
    </script>
</html>

首页页码

使用 PageSetup 类的 firstPageNumber 属性开始对工作表页面编号。firstPageNumber 属性设置第一张工作表页面的页码,后续页面按升序编号。

<!DOCTYPE html>
<html>
    <head>
        <title>Aspose.Cells Example</title>
    </head>
    <body>
        <h1>Set First Page Number Example</h1>
        <input type="file" id="fileInput" accept=".xls,.xlsx,.csv" />
        <button id="runExample">Run Example</button>
        <a id="downloadLink" style="display: none;">Download Result</a>
        <div id="result"></div>
    </body>

    <script src="aspose.cells.js.min.js"></script>
    <script type="text/javascript">
        const { Workbook, SaveFormat, Utils } = AsposeCells;

        AsposeCells.onReady({
            license: "/lic/aspose.cells.enc",
            fontPath: "/fonts/",
            fontList: [
                "arial.ttf",
                "NotoSansSC-Regular.ttf"
            ]
        }).then(() => {
            console.log("Aspose.Cells initialized");
        });

        document.getElementById('runExample').addEventListener('click', async () => {
            // Creating a new Workbook object (blank workbook)
            const workbook = new Workbook();

            // Accessing the first worksheet in the Excel file
            const worksheet = workbook.worksheets.get(0);

            // Setting the first page number of the worksheet pages
            worksheet.pageSetup.firstPageNumber = 2;

            // Saving the Workbook and preparing download link
            const outputData = workbook.save(SaveFormat.Excel97To2003);
            const blob = new Blob([outputData]);
            const downloadLink = document.getElementById('downloadLink');
            downloadLink.href = URL.createObjectURL(blob);
            downloadLink.download = 'SetFirstPageNumber_out.xls';
            downloadLink.style.display = 'block';
            downloadLink.textContent = 'Download Excel File';

            document.getElementById('result').innerHTML = '<p style="color: green;">First page number set to 2. Click the download link to get the modified file.</p>';
        });
    </script>
</html>