冰蓝科技
|
028-81705109
|
|
微信扫一扫
|

Spire.Cloud 纯前端文档控件

Spire.PDF 11.1.0 现已正式发布。最新版本增强了 XPS 到 PDF 和 PDF 到 PNG、HTML、SVG 和 OFD 的转换功能。同时,本次更新还成功修复了一些已知问题,例如多线程提取 PDF 文本报错的问题。更多详情请查阅以下内容。

问题修复:


获取 Spire.PDF 11.1.0,请点击:

https://www.e-iceblue.cn/Downloads/Spire-PDF-NET.html

在如今的数字时代,能够高效地处理 Excel 文件对于 web 应用程序来说至关重要。React,作为一种广泛用于用户界面的 JavaScript 库,通过与 Spire.XLS for JavaScript 集成可以大大增强其功能。这种集成允许开发人员直接在 React 项目中执行复杂的操作,如读取、写入和格式化 Excel 文件。

本文将介绍如何将 Spire.XLS for JavaScript 集成到您的 React 项目中,包括从初始设置到直接使用示例的所有内容。

在 React 项目中使用 Spire.XLS for JavaScript 的优势

React 是一种用于构建用户界面的流行 JavaScript 库,它使开发人员能够创建交互式动态用户体验,从而彻底改变了 web 开发。而另一方面,Spire.XLS for JavaScript 是一个功能强大的库,允许开发人员直接在浏览器中操作 Excel 文件。

通过将 Spire.XLS for JavaScript 集成到 React 项目中,您可以 Excel 中的高级功能添加到您的应用程序中。以下是一些主要优势:

初始环境设置

步骤 1、安装 Node.js 和 npm

从官方网站下载并安装 Node.js。请确保选择与您的操作系统相匹配的版本。

安装完成后,您可以在终端运行以下命令来验证 Node.js 和 npm 是否正常工作:

node -v
npm -v

查看安装的Node.js 和 npm版本

步骤 2、创建新的 React 项目

使用终端中的 Create React App 创建一个名为 my-app 的新 React 项目:

npx create-react-app my-app

创建新React 项目

创建项目后,可以导航到项目目录,使用以下命令启动开发服务器:

cd my-app
npm start

运行命令启动开发服务器

如果 React 项目编译成功,应用程序将在 http://localhost:3000 上提供服务,让您可以在浏览器中查看和测试应用程序。

在服务器上打开创建的React 项目

要可视化浏览和管理项目中的文件,可以使用 VS Code 打开项目。

在VS Code中打开创建的React 项目

在项目中集成 Spire.XLS for JavaScript

从网站下载 Spire.XLS for JavaScript 并解压缩到磁盘上的某个位置。下载的产品包整合了Spire.Doc for JavaScript,Spire.XLS for JavaScript,Spire.PDF for JavaScript,Spire.Presentation for JavaScript,使用Spire.XLS for JavaScript的功能需将相应( spire.xls.js,Spire.Xls.Wasm.zip,spire.common.js,Spire.Common.Wasm.zip,_framework 文件复制到项目的 public 文件夹中。

下载的 Spire.XLS for JavaScript文件

您也可以使用 npm 来安装 Spire.XLS for Java Script。在 VS Code 的终端运行以下命令即可:

npm i spire.office

此命令下载后,从项目的 node_modules/spire.office 路径下找到相应文件复制到public下。

同时为了确保文本渲染,相关使用字体文件可自定义路径添加。以下示例中,字体添加路径为:public\font。

复制 Spire.XLS 文件到 public文件夹

使用 JavaScript 创建和保存 Excel 文件

修改 "App.js" 文件中的代码,使用 WebAssembly (WASM) 模块生成 Excel 文件。具体来说,利用 Spire.XLS for JavaScript 库进行 Excel 文件操作。

在App.js中写入生成Excel文档的代码

完整代码如下:

import React, { useState, useEffect } from 'react';

function App() {
  const [wasmModule, setWasmModule] = useState(null);
  // 加载 Spire.XLS
  useEffect(() => {
    (async () => {
      try {
        const publicUrl = process.env.PUBLIC_URL || '';
        const spireModule = await import(/* webpackIgnore: true */ `${publicUrl}/spire.xls.js`);
        const rawModule = spireModule.default || spireModule;
        window.wasmModule = typeof rawModule === 'function'
          ? await rawModule({ locateFile: p => p.endsWith('.wasm') ? `${publicUrl}/${p}` : p })
          : rawModule;
        setWasmModule(window.wasmModule);
      } catch (error) {
        console.error('Failed to load spire.xls.js WASM module:', error);
      }
    })();
  }, []);

  // 创建HelloWorld.xlsx
  const ExcelToPDF = async () => {
    const wasmModule = window.wasmModule.spirexls;

    if (wasmModule) {
      // 将字体加载到虚拟文件系统(VFS)中
      await window.spire.FetchFileToVFS('arial.ttf', '/Library/Fonts/', `${process.env.PUBLIC_URL}/font/`);

      // 创建一个新的工作簿
      const workbook = new wasmModule.Workbook();

      // 清除默认工作表
      workbook.Worksheets.Clear();

      // 添加一个名为“MySheet”的新工作表
      const sheet = workbook.Worksheets.Add("MySheet");

      // 设置“A1”单元格的文本
      sheet.Range.get("A1").Text = "Hello World";

      // 将列宽设置为自动适应
      sheet.Range.get("A1").AutoFitColumns();

      // 定义输出文件名
      const outputFileName = 'HelloWorld.xlsx';

      // 将工作簿保存到指定路径
      workbook.SaveToFile({ fileName: outputFileName, version: wasmModule.ExcelVersion.Version2010 });

      // 读取已保存的文件并转换为 Blob 对象
      const modifiedFileArray = window.dotnetRuntime.Module.FS.readFile(outputFileName);
      const modifiedFile = new Blob([modifiedFileArray], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });

      // 为Blob创建一个URL并启动下载
      const url = URL.createObjectURL(modifiedFile);
      const a = document.createElement('a');
      a.href = url;
      a.download = outputFileName;
      document.body.appendChild(a);
      a.click();
      document.body.removeChild(a);
      URL.revokeObjectURL(url);

      // 清理工作簿使用的资源
      workbook.Dispose();
    }
  };

  return (
    <div style={{ textAlign: 'center', height: '300px' }}>
      <h1>创建HelloWorld.xlsx</h1>
      <button onClick={ExcelToPDF} disabled={!wasmModule}>
        生成

      </button>
    </div>
  );
}

export default App;

在 VS Code 的终端使用 npm start 启动开发服务器,单击 “生成” 就能下载生成的 Excel 文件。

保存修改的代码

Spire.Doc for JavaScript 是一个独立的 Word API,开发者无需在开发环境或目标系统上安装 Microsoft Word,即可将 Word 文档创建等功能集成到 JavaScript 应用程序中。同时,它还兼容大部分国产操作系统,能够在中标麒麟和中科方德等国产操作系统中正常运行。

作为一款值得信赖的 JavaScript Word 库,Spire.Doc for JavaScript 能够处理多种 Word 文档操作任务。它支持 Word 97-2003 / 2007 / 2010 / 2013 / 2016 / 2019 等版本的文档,并能够将这些文档转换为其他常见格式,如 XML、RTF、TXT、EMF、HTML、ODT、Markdown 等,同时也支持将这些格式转换回 Word 文档。此外,它还支持将 Word Doc/Docx 转换为 PDF、图片(PNG、JPEG)、PostScript、OFD、XPS、EPUB、PCL(打印机控制语言),以及将 RTF 转换为 PDF/HTML、HTML 转换为 PDF/图片、Markdown 转换为 PDF,并保持高质量的转换效果。

Spire.XLS for JavaScript 是一款专为开发人员设计的 JavaScript Excel 工具库,支持在任何 JavaScript 环境下直接创建、读取、编辑和转换 Excel 文件。借助此工具,开发人员能够高效地执行各种 Excel 编程任务,包括从模板生成新文档、更新现有文档或转换文件格式。

Spire.XLS for JavaScript 与 Vue、React、Angular 和 JavaScript 等主流框架完全兼容,使开发人员能够在网络上轻松构建并部署自定义的 JavaScript 应用。

作为一款独立的 JavaScript Excel API,该工具运行无需依赖 Microsoft Office Excel,支持从旧版 Excel 97-2003格式(.xls)到最新版本 Excel 2007、2010、2013、2016 和 2019(.xlsx、.xlsb、.xlsm),以及 Open Office(.ods)格式。

条形码是实现自动化收集和处理数据的关键。条形码可广泛应用于各行各业,从零售业、制造业到医疗保健业和物流业。通过在 PDF 中添加条形码,您可以创建更具互动性的文档,方便扫描和处理。本文将介绍如何使用 Spire.PDF for Java 通过 Java 在 PDF 中添加一维条形码或二维码。

安装 Java 库

首先,您需要下载 Spire.PDF for Java 和 Spire.Barcode for Java 库,然后将相应的 JAR 文件作为依赖项添加到您的 Java 程序中。如果您使用 Maven,则可以将以下代码添加到项目的 pom.xml 文件中,从而在应用程序中导入 JAR 文件。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf</artifactId>
        <version>12.9.0</version>
    </dependency>
</dependencies>
<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.barcode</artifactId>
        <version>5.2.0</version>
    </dependency>
</dependencies>

Java 在 PDF 中添加条形码

Spire.PDF for Java 支持多种由不同类代表的一维条形码类型,如 PdfCodabarBarcode、PdfCode128ABarcode、PdfCode32Barcode、PdfCode39Barcode、PdfCode93Barcode。

每个类都提供了相应的方法来设置条形码文本、大小、颜色等。以下是在 PDF 页面指定位置绘制常见的 Codabar、Code128 和 Code39 条码的步骤。

  • Java
import com.spire.pdf.*;
import com.spire.pdf.barcode.*;
import com.spire.pdf.graphics.*;

import java.awt.*;
import java.awt.geom.Point2D;

public class DrawBarcode {
    public static void main(String[] args) {

        // 创建PDF文档
        PdfDocument pdf = new PdfDocument();

        // 添加页面
        PdfPageBase page = pdf.getPages().add();

        // 初始化y坐标
        double y = 15;

        // 创建字体
        PdfTrueTypeFont font= new PdfTrueTypeFont(new Font("Arial", Font.BOLD, 12));

        // 在页面上绘制文本 "Codebar:"
        PdfTextWidget text = new PdfTextWidget();
        text.setFont(font);
        text.setText("Codebar:");
        PdfLayoutResult result = text.draw(page, 0, y);
        y =(float)(result.getBounds().getY()+ result.getBounds().getHeight() + 2);

        // 在页面上绘制Codabar条码
        PdfCodabarBarcode codebar= new PdfCodabarBarcode("00:12-3456/7890");
        codebar.setBarcodeToTextGapHeight(1f);
        codebar.setBarHeight(50f);
        codebar.setTextDisplayLocation(TextLocation.Bottom);
        PdfRGBColor blue = new PdfRGBColor(Color.blue);
        codebar.setTextColor(blue);
        Point2D.Float point = new Point2D.Float();
        point.setLocation(0,y);
        codebar.draw(page,point);
        y = codebar.getBounds().getY()+ codebar.getBounds().getHeight() + 5;

        // 在页面上绘制文本 "Code128-A:"
        text.setText("Code128-A:");
        result = text.draw(page, 0, y);
        page = result.getPage();
        y =result.getBounds().getY()+ result.getBounds().getHeight() + 2;

        // 在页面上绘制Code128-A条码
        PdfCode128ABarcode code128 = new PdfCode128ABarcode("HELLO 00-123");
        code128.setBarcodeToTextGapHeight(1f);
        code128.setBarHeight(50f);
        code128.setTextDisplayLocation(TextLocation.Bottom);
        code128.setTextColor(blue);
        point.setLocation(point.x,y);
        code128.draw(page, point);
        y =code128.getBounds().getY()+ code128.getBounds().getHeight() + 5;

        // 在页面上绘制文本 "Code39:"
        text.setText("Code39:");
        result = text.draw(page, 0, y);
        page = result.getPage();
        y =result.getBounds().getY()+ result.getBounds().getHeight() + 2;

        // 在页面上绘制Code39条码
        PdfCode39Barcode code39 = new PdfCode39Barcode("16-273849");
        code39.setBarcodeToTextGapHeight(1f);
        code39.setBarHeight(50f);
        code39.setTextDisplayLocation(TextLocation.Bottom);
        code39.setTextColor(blue);
        point.setLocation(point.x,y);
        code39.draw(page, point);

        // 保存文档
        pdf.saveToFile("DrawBarcode.pdf");
    }
}

在 PDF 页面上绘制 Codabar、Code128 和 Code39 三种条形码

Java 在 PDF 中添加二维码

要在 PDF 文件中添加二维条形码,首先需要使用 Spire.Barcode for Java 库生成二维码,然后使用 Spire.PDF for Java 库将二维码图像添加到 PDF 文件中。具体步骤如下:

  • Java
import com.spire.pdf.*;
import com.spire.pdf.graphics.*;
import com.spire.barcode.*;

import java.awt.*;
import java.awt.image.BufferedImage;

public class DrawQRCode {
    public static void main(String[] args) {
        // 创建PDF文档
        PdfDocument pdf = new PdfDocument();

        // 添加页面
        PdfPageBase page = pdf.getPages().add();

        // 创建 BarcodeSettings 类的对象
        BarcodeSettings settings = new BarcodeSettings();
        // 将条码类型设置为二维码QR Code
        settings.setType(BarCodeType.QR_Code);
        // 设置二维码数据
        settings.setData("ABC 123456789");
        settings.setData2D("ABC 123456789");
        // 设置在底部显示文本
        settings.setShowTextOnBottom(true);
        // 设置二维码宽度
        settings.setX(2);
        // 设置二维码的纠错级别
        settings.setQRCodeECL(QRCodeECL.M);

        // 生成二维码图片
        BarCodeGenerator barCodeGenerator = new BarCodeGenerator(settings);
        BufferedImage QRimage = barCodeGenerator.generateImage();

        // 初始化y坐标
        double y = 30;

        // 创建字体
        PdfTrueTypeFont font= new PdfTrueTypeFont(new Font("Arial", Font.BOLD, 12));

        // 在页面上绘制文本
        PdfTextWidget text = new PdfTextWidget();
        text.setFont(font);
        text.setText("QRcode:");
        PdfLayoutResult result = text.draw(page, 0, y);
        y =(float)(result.getBounds().getY()+ result.getBounds().getHeight() + 2);

        // 在页面上绘制二维码图片
        PdfImage pdfImage = PdfImage.fromImage(QRimage);
        page.getCanvas().drawImage(pdfImage, 0, y);
        
        // 保存文档
        pdf.saveToFile("DrawQRCode.pdf");
    }
}

在 PDF 页面上绘制二维码

申请临时 License

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。

Spire.XLS for Java 15.1.0 现已发布。该版本支持设置全局自定义字体目录,并且还修复了几个在转换 Excel 到 PDF、复制工作表和加载文档时出现的问题。详情查看下文。

新功能:

问题修复:


获取 Spire.XLS for Java 15.1.0,请点击:

https://www.e-iceblue.cn/Downloads/Spire-XLS-JAVA.html

使用 Python 从图片中提取文字是 OCR 驱动类工作流程中广泛应用的技术,比如文档数字化、表单识别、发票处理等场景均会用到。目前仍有大量重要文档仅以扫描件或照片形式存在,因此将视觉信息转换为机器可识别的文字就显得尤为重要。

本文将介绍如何使用 Spire.OCR for Python 提取图片文本,涵盖基础文本提取、带坐标信息提取、批量图片处理等实用功能,并附上最佳实践与常见问题解答,帮助开发者高效落地 OCR 功能。

内容概览:


高效 Python OCR 库

Spire.OCR for Python 是一款功能强大的文本识别库,尤其适用于需要提取结构化排版信息和支持多语言的应用场景。该 Python OCR 引擎具备以下特性:

  • 支持提取纯文本及文本块坐标、排版信息
  • 兼容多语言识别:英文、简体 / 繁体中文、法语、德语、日语、韩语等
  • 支持主流图片格式:JPG、PNG、BMP、GIF、TIFF
  • 部署简单、代码简洁,可快速集成至各类 Python 项目

环境配置:安装库与 OCR 模型

在使用 Python 从图片提取文字前,需要先安装 Spire.OCR 库,并下载与操作系统匹配的 OCR 模型文件。

1. 安装 Spire.OCR for Python

使用 pip 命令安装即可:

pip install spire.ocr

2. 下载 OCR 模型包

根据操作系统下载对应的模型文件包:

下载完成后解压文件,后续在 Python 脚本中配置 OCR 引擎时,需指定模型文件的路径。


核心功能实现:Python 提取图片文字

本节将介绍多种使用 Python 提取图片文字的方法,从简单的纯文本提取开始,逐步讲解更高级的结构化识别方式。

基础 OCR 图片文字提取(图片转纯文本)

该示例可直接识别图片内容,输出无格式纯文本并保存至文件:

from spire.ocr import *

# 创建OcrScanner实例,负责进行图片的OCR扫描和文字识别
scanner = OcrScanner()

# 配置OCR模型路径和识别语言
configureOptions = ConfigureOptions()
configureOptions.ModelPath = r'D:\OCR\win-x64'
configureOptions.Language = 'Chinese'
scanner.ConfigureDependencies(configureOptions)

# 执行OCR扫描,从指定图片文件中识别文本
scanner.Scan(r'示例.png')

# 将识别的文字内容写入文本文件
text = scanner.Text.ToString()
with open('OCR结果.txt', 'a', encoding='utf-8') as file:
    file.write(text + '\n')

Python从图片中提取文本

可选操作:清洗和预处理提取的文字(OCR 后处理)

OCR 识别后的输出结果可能包含空行或无效噪点,以下代码片段可实现文字清洗:

# 清洗提取的文字:移除空行或短行
clean_lines = [line.strip() for line in text.split('\n') if len(line.strip()) > 2]
cleaned_text = '\n'.join(clean_lines)

# 将清洗后的文字保存到新文件
with open('output_clean.txt', 'w', encoding='utf-8') as file:
    file.write(cleaned_text)

适用场景:将 OCR 识别结果传入自然语言处理任务或存入数据库前,对结果进行后处理。

提取带坐标信息的图片文字

针对发票、表单、表格等结构化文档,可获取文本块的位置坐标,便于后续数据解析:

from spire.ocr import *

# 创建OcrScanner实例,用于扫描和识别图片中的文本
scanner = OcrScanner()

# 配置OCR模型路径和识别语言
configureOptions = ConfigureOptions()
configureOptions.ModelPath = r'D:\OCR\win-x64'
configureOptions.Language = 'Chinese'
scanner.ConfigureDependencies(configureOptions)

# 执行文本识别,扫描指定图片文件
scanner.Scan(r'报价单.png')

# 获取识别到的文本内容
text = scanner.Text

# 将每个块的文本及其位置信息添加到列表
results = []
for block in text.Blocks:
    results.append(f"文本:{block.Text}")
    box = block.Box
    results.append(f"坐标:X={box.X}, Y={box.Y}, 宽度={box.Width}, 高度={box.Height}")
    results.append("---------")


# 将提取的带坐标的文本保存到txt文件
with open("提取文本与坐标.txt", "w", encoding="utf-8") as f:
    f.write('\n'.join(results))

以下是带位置信息的文字块识别结果示例: Python提取图片文本和坐标信息

批量提取文件夹中的多张图片文本

如需批量处理大量图片,可通过遍历文件夹实现自动化识别:

import os
from spire.ocr import *

def extract_text_from_folder(folder_path, model_path):
    scanner = OcrScanner()
    config = ConfigureOptions()
    config.ModelPath = model_path
    config.Language = 'English'
    scanner.ConfigureDependencies(config)

    # 遍历文件夹图片
    for filename in os.listdir(folder_path):
        if filename.lower().endswith(('.png', '.jpg', '.jpeg')):
            image_path = os.path.join(folder_path, filename)
            scanner.Scan(image_path)
            text = scanner.Text.ToString()

            # 为每张图片的识别结果单独创建文件保存
            output_file = os.path.splitext(filename)[0] + '_output.txt'
            with open(output_file, 'w', encoding='utf-8') as f:
                f.write(text)

# 调用示例
extract_text_from_folder(r'D:\images', r'D:\OCR\win-x64')

提取图片文本的实际应用场景

  • ✅ 财务票据处理:发票、收据、对账单文字识别
  • ✅ 证件信息提取:身份证、护照、驾驶证信息数字化
  • ✅ 办公文档数字化:扫描件、照片文档转可编辑文本
  • ✅ 表单 / 问卷识别:批量提取纸质表单数据
  • ✅ 多语言文档检索:外文图片文本快速识别

如果需要从 PDF 文档而非图片中提取文字,你可以参考相关教程:使用 Python 提取 PDF 中的文本内容。


支持的语言与图片格式

Spire.OCR 支持多种语言和丰富的图片格式,可适配更多应用场景。

支持的识别语言

  • 英语
  • 简体/繁体中文
  • 法语
  • 德语
  • 日语
  • 韩语

可以通过 configureOptions.Language 参数设置识别语言。

支持的图片格式

  • JPG / JPEG
  • PNG
  • BMP
  • GIF
  • TIFF

如何提高 OCR 识别准确率(最佳实践)

要提升 Python 提取图片文字的 OCR 识别效果,可遵循以下技巧:

  1. 使用高分辨率图片(分辨率≥300DPI)
  2. 对图片进行灰度化、阈值处理或去噪等预处理操作
  3. 避免使用倾斜、噪点过多的扫描件
  4. 保证 OCR 设置的识别语言与图片中的文字语言一致

常见问题解答

从图片中提取文字的最佳 Python OCR 库是什么?

答:Spire.OCR for Python 是一款高性能的 Python OCR 库,具备高准确率的识别效果、多语言支持能力和排版感知的输出特性。该库还能与 Spire.Office 组件无缝协作,实现全自动化处理——比如将提取的文字保存至 Excel、Word 或可检索的 PDF 文件中。当然,也可以根据自身需求,选择开源工具搭建 Python 图片文字提取的项目。

能否识别表格、排版复杂的图片?

答:Spire.OCR 支持提取文本块坐标,可结合坐标信息解析表格、排版结构,适配复杂文档场景。

如何用 Python 从扫描 PDF 中提取文字?

答:可先使用 Spire.PDF for Python 将 PDF 页面转为图片,再通过 Spire.OCR 执行识别,实现扫描 PDF 文本提取。


总结

Spire.OCR for Python 凭借简洁的 API、高效的识别速度和丰富的功能,是 Python 实现图片文字提取的优质选择。无论是单张图片识别、结构化文本提取,还是批量自动化处理,均可快速集成使用,大幅降低 OCR 功能的开发成本。若想解除 Spire.OCR 的使用限制,可以申请免费的临时许可证。

PowerPoint 演示文稿以有条理且富有吸引力的方式呈现信息著称。为了更好地组织管理幻灯片,PowerPoint 提供了将幻灯片分组为节的功能。这一功能可以明显简化大型演示文稿的导航与管理。在本文中,我们将演示如何使用 Spire.Presentation for Python 在 Python 中管理 PowerPoint 节中的幻灯片。具体来说,我们将介绍如何在节中添加、检索、重排和删除幻灯片。

安装 Spire.Presentation for Python

本教程需要 Spire.Presentation for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。

pip install Spire.Presentation

如果您不确定如何安装,请参考此教程: 如何在 Windows 中安装 Spire.Presentation for Python

Python 在 PowerPoint 节中插入幻灯片

在需要向节中引入新内容时,插入幻灯片是必不可少的操作。使用 Spire.Presentation for Python,你可以通过 Section.Insert() 方法快速将幻灯片插入到指定节中。具体步骤如下:

  • Python
from spire.presentation import *

 
# 创建一个 Presentation 类的实例
presentation = Presentation()
# 加载一个 PowerPoint 演示文稿
presentation.LoadFromFile("E:/Administrator/Python1/input/幻灯片1.pptx")
 
# 获取第一个节
first_section = presentation.SectionList[0]
 
# 在演示文稿中添加一个新幻灯片并插入到第一节的开头
slide = presentation.Slides.Append()
first_section.Insert(0, slide)
 
# 从演示文稿中删除添加的幻灯片
presentation.Slides.Remove(slide)
 
# 保存修改后的演示文稿
presentation.SaveToFile("E:/Administrator/Python1/output/在节中插入幻灯片.pptx", FileFormat.Pptx2016)

# 释放资源
presentation.Dispose()

Python 在 PowerPoint 节中插入幻灯片

Python 从 PowerPoint 节中获取幻灯片

从指定节中提取幻灯片可以帮你专注于较小的一组幻灯片,用于重新排序或者应用自定义格式等任务。使用 Spire.Presentation for Python 提供的 Section.GetSlides() 方法,你可以轻松获取指定节的所有幻灯片。下面是具体的操作步骤。

  • Python
from spire.presentation import *

 
# 创建一个 Presentation 类的实例
presentation = Presentation()
# 加载一个 PowerPoint 演示文稿
presentation.LoadFromFile("E:/Administrator/Python1/input/幻灯片1.pptx")
 
# 获取第三节的幻灯片
section = presentation.SectionList[2]
slides = section.GetSlides()
 
output_content = "该节中的幻灯片编号为:\n"
 
# 获取该节中的每张幻灯片的幻灯片编号
for slide in slides:
    output_content += str(slide.SlideNumber) + " "
 
# 将幻灯片编号保存到文本文件中
with open("E:/Administrator/Python1/output/幻灯片编号.txt", "w", encoding="utf-8") as file:
    file.write(output_content)

Python 获取 PowerPoint 节中幻灯片编号

Python 在 PowerPoint 节中重排幻灯片顺序

重新排列幻灯片的顺序非常重要,它可以确保相关内容按正确的顺序展示。通过 Spire.Presentation for Python 提供的 Section.Move() 方法,你可以在节中将一张幻灯片移动到新的位置。下面就是详细的步骤。

  • Python
from spire.presentation import *

 
# 创建一个 Presentation 类的实例
presentation = Presentation()
# 加载一个 PowerPoint 演示文稿
presentation.LoadFromFile("E:/Administrator/Python1/input/幻灯片1.pptx")
 
# 获取演示文稿的第二节
section = presentation.SectionList[1]
 
# 获取该节中的幻灯片
slides = section.GetSlides()
 
# 将节中的第一张幻灯片移动到指定位置
section.Move(2, slides[0])
 
# 保存修改后的演示文稿
presentation.SaveToFile("E:/Administrator/Python1/output/重排幻灯片.pptx", FileFormat.Pptx2016)

# 释放资源
presentation.Dispose()

Python 在 PowerPoint 节中重排幻灯片顺序

Python 从 PowerPoint 节中移除幻灯片

从节中移除幻灯片可以简化你的演示文稿,尤其是当部分幻灯片过时或不重要的时候。在 Spire.Presentation for Python 的帮助下,你可以使用 Section.RemoveAt() 或 Section.RemoveRange() 方法从节中轻松移除单张或多张幻灯片。一起来看看具体的操作步骤吧。

  • Python
from spire.presentation import *

 
# 创建一个 Presentation 类的实例
presentation = Presentation()
# 加载一个 PowerPoint 演示文稿
presentation.LoadFromFile("E:/Administrator/Python1/input/幻灯片1.pptx")
 
# 获取演示文稿的第二节
section = presentation.SectionList[1]
 
# 从节中删除第一张幻灯片
section.RemoveAt(0)
 
# 或从节中删除多张幻灯片
# section.RemoveRange(0, 2)
 
# 保存修改后的演示文稿
presentation.SaveToFile("E:/Administrator/Python1/output/在节中移除幻灯片.pptx", FileFormat.Pptx2016)

# 释放资源
presentation.Dispose()

申请临时 License

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。

在处理 Excel 文件时,使用 Python 中的字节流创建、读取和修改 Excel 文件可以实现高效的数据操作和自动化。这种方法消除了对储存的直接读写以及对本地文件系统的依赖,非常适合云端或需要高效处理的环境。同时,这种途径还支持实时数据交换、系统集成和 Web 应用中的即时反馈,帮助实现快速开发和灵活应用。本文将介绍如何使用 Spire.XLS for Python 通过简单的 Python 代码以字节流的方式动态处理 Excel 工作簿。

安装 Spire.XLS for Python

此教程需要 Spire.XLS for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。

pip install Spire.XLS

如果您不确定如何安装,请参考: 如何在 Windows 中安装 Spire.XLS for Python

动态创建 Excel 文件并保存为字节流

借助 Spire.XLS for Python,我们可以通过初始化 Workbook 实例并填充数据来创建一个新的 Excel 工作簿。工作簿准备就绪后,我们可以将其保存到 Stream 对象,并将其转换成 bytes 对象以便进一步使用或存储。这种方法允许我们在内存中高效地生成 Excel 文件,而无需依赖磁盘存储。

以下是使用 Python 创建 Excel 文件并将其保存为字节流的操作步骤:

  • Python
from spire.xls import Workbook, FileFormat, Stream, Color, HorizontalAlignType

# 创建Workbook类的一个实例
workbook = Workbook()

# 获取第一个工作表
sheet = workbook.Worksheets.get_Item(0)

# 创建一个二维列表作为数据源或从其他来源读取数据
data = [
    ["省份", "省会", "人口 (百万)", "面积 (平方公里)", "地区"],
    ["广东", "广州", 126, 179784, "华南"],
    ["山东", "济南", 100.5, 157100, "华东"],
    ["河南", "郑州", 96, 167000, "华中"],
    ["四川", "成都", 83.4, 485000, "西南"],
    ["江苏", "南京", 80.7, 102600, "华东"],
    ["河北", "石家庄", 75.5, 187700, "华北"],
    ["湖南", "长沙", 69.2, 211800, "华中"],
    ["浙江", "杭州", 65.4, 101800, "华东"],
    ["广西", "南宁", 56.2, 236700, "华南"],
    ["湖北", "武汉", 59.2, 185900, "华中"],
    ["福建", "福州", 41.5, 121400, "华东"]
]

# 将数据插入到工作表中
for i, row in enumerate(data):
    for j, value in enumerate(row):
        if isinstance(value, str):
            sheet.Range.get_Item(i + 1, j + 1).Value = value
        else:
            sheet.Range.get_Item(i + 1, j + 1).NumberValue = value

# 格式化标题行的新颜色
headerRow = sheet.AllocatedRange.Rows.get_Item(0)
headerRow.Style.Color = Color.FromRgb(0, 102, 204)  # 蓝色标题
headerRow.Style.Font.FontName = "宋体"
headerRow.Style.Font.Size = 14
headerRow.Style.Font.IsBold = True
headerRow.Style.Font.Color = Color.FromRgb(255, 255, 255)  # 白色文字
headerRow.Style.HorizontalAlignment = HorizontalAlignType.Center

# 格式化数据行的新交替颜色
for i in range(1, sheet.AllocatedRange.Rows.Count):
    row = sheet.AllocatedRange.Rows.get_Item(i)
    row.Style.Font.FontName = "宋体"
    row.Style.Font.Size = 12
    row.Style.HorizontalAlignment = HorizontalAlignType.Left
    if i % 2 == 0:
        row.Style.Color = Color.FromRgb(229, 243, 255)  # 偶数行浅蓝色
    else:
        row.Style.Color = Color.FromRgb(255, 255, 204)  # 奇数行浅黄色

# 自动调整列宽
for i in range(sheet.AllocatedRange.Columns.Count):
    sheet.AutoFitColumn(i + 1)

# 创建Stream对象
stream = Stream()

# 将工作簿保存到流中
workbook.SaveToStream(stream, FileFormat.Version2016)
workbook.Dispose()

# 将流转换为字节
bytes_data = stream.ToArray()

# 将字节写入文件或按需使用
with open("output/CreateExcelByStream.xlsx", "wb") as file:
    file.write(bytes_data)

动态创建 Excel 文件并保存为字节流

用 Python 读取字节流中的 Excel 文件

要从字节流加载 Excel 工作簿,我们可以将字节数据转换为 Stream 对象并加载到 Workbook 实例中。然后,我们就可以轻松获取工作表数据并在 Python 应用程序中利用这些数据。

以下是从字节流读取 Excel 文件的操作步骤:

  • Python
from spire.xls import Workbook, Stream

# 创建一个bytes对象或使用已有的一个
with open("output/CreateExcelByStream.xlsx", "rb") as file:
    bytes_data = file.read()

# 创建Workbook类的一个实例
workbook = Workbook()

# 从字节流加载Excel文件
stream = Stream(bytes_data)  # 将bytes_data转换为Stream对象
workbook.LoadFromStream(stream)

# 获取第一个工作表
sheet = workbook.Worksheets.get_Item(0)

# 读取工作表中的数据
# 创建一个列表来存储数据
data = []
for i in range(sheet.AllocatedRange.Rows.Count):
    # 检索一行数据
    row_data = []
    for j in range(sheet.AllocatedRange.Columns.Count):
        # 获取单元格的值
        cellValue = sheet.Range.get_Item(i + 1, j + 1).Value  # 或者 .Text 如果需要获取显示文本
        row_data.append(cellValue)
    data.append(row_data)

# 显示数据或按需使用
for row in data:
    print([str(item) if item is not None else 'None' for item in row])  # 确保所有项都是字符串类型以便打印

# 释放资源
workbook.Dispose()

用 Python 读取字节流中的 Excel 文件

用 Python 编辑字节流中的 Excel 文件

通过字节流修改 Excel 文件使我们能够在不保存到磁盘的情况下动态更新数据。此方法需要将 Excel 文件流加载到 Workbook 实例中,使用 Spire.XLS for Python 提供的类和方法对其内容或格式进行更改,然后将更改保存回字节流。

以下是使用 Python 修改字节流中的 Excel 工作簿的操作步骤:

  • Python
from spire.xls import Workbook, Stream, HorizontalAlignType, Color, FileFormat

# 从文件读取字节数据
with open("output/CreateExcelByStream.xlsx", "rb") as file:
    bytes_data = file.read()

# 创建Workbook实例并从字节流加载Excel文件
workbook = Workbook()
stream = Stream(bytes_data)
workbook.LoadFromStream(stream)
stream.Close()  # 关闭流以释放资源

# 移除多余的worksheet
# for i in range(workbook.Worksheets.Count - 1, 0, -1):
#     workbook.Worksheets.RemoveAt(i)

# 获取第一个工作表
sheet = workbook.Worksheets.get_Item(0)

# 修改标题行样式
headerRow = sheet.AllocatedRange.Rows.get_Item(0)
headerRow.Style.Font.Bold = True
headerRow.Style.Font.FontName = "微软雅黑"
headerRow.Style.Font.Size = 12
headerRow.Style.HorizontalAlignment = HorizontalAlignType.Left
headerRow.Style.Color = Color.FromRgb(173, 216, 230)  # 浅蓝色背景色
# 为标题行添加外边框
headerRow.BorderAround()

# 修改数据行样式
for i in range(1, sheet.AllocatedRange.Rows.Count):
    row = sheet.AllocatedRange.Rows.get_Item(i)
    row.Style.Font.FontName = "微软雅黑"
    row.Style.Font.Size = 11
    if i % 2 == 0:
        row.Style.Color = Color.FromRgb(240, 240, 240)  # 偶数行浅灰色背景色
    else:
        row.Style.Color = Color.FromRgb(255, 255, 255)  # 奇数行白色背景色

# 自动调整列宽
for i in range(sheet.AllocatedRange.Columns.Count):
    sheet.AutoFitColumn(i + 1)

# 将修改后的Excel文件保存到新的字节流中
streamTemp = Stream()
workbook.SaveToStream(streamTemp, FileFormat.Version2016)
workbook.Dispose()  # 释放Workbook对象资源

# 将字节流转换为字节数组,并写入新文件
bytes_data_modified = streamTemp.ToArray()
with open("output/ModifiedExcel.xlsx", "wb") as file:
    file.write(bytes_data_modified)

# 确保关闭临时流以释放资源
streamTemp.Close()

用 Python 编辑字节流中的 Excel 文件

申请临时 License

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。

Excel 工作簿作为一种广泛使用的数据管理工具,可以与 Python 相结合,实现大规模数据处理的自动化。通过 Python 设置、更新和读取 Excel 中的单元格值,可以显著提升工作效率,减少重复性任务,同时增强数据处理流程的灵活性和可扩展性,从而创造更多的附加价值。该方法适用于多个领域,从自动化生成财务报表到数据分析报告,都能在不同工作场景中大幅提高生产力。

本文将演示怎样使用 Spire.XLS for Python 设置、更新和获取 Excel 文件中单元格的值。

安装 Spire.XLS for Python

本方案需要 Spire.XLS for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它轻松安装到 Windows 中。

pip install Spire.XLS

如果您不清楚如何安装,请参考此教程: 如何在 Windows 中安装 Spire.XLS for Python

Python 设置 Excel 文件中单元格的值

我们可以使用 Spire.XLS for Python 提供的 Worksheet.Range.get_Item() 方法,从 Excel 工作表中获取指定的单元格,并返回为 CellRange 对象。例如,可以使用 Range.get_Item(2, 1) 或 Range.get_Item("A2")(对应第 2 行,第 1 列)来获取单元格。接着,通过 CellRange.Value 属性设置单元格的值,或者使用该类中的其它属性来设置文本、数字、布尔值等类型的数据。以下是具体操作的示例:

  • Python
from spire.xls import Workbook, FileFormat, DateTime, HorizontalAlignType
import datetime
 
# 创建一个 Workbook 对象
workbook = Workbook()
 
# 获取第一个默认工作表
sheet = workbook.Worksheets.get_Item(0)
 
# 获取单元格并设置文本
cell = sheet.Range.get_Item(2, 2)
cell.Text = "示例文本"
 
# 获取单元格并设置常规值
cell1 = sheet.Range.get_Item(3, 2)
cell1.Value = "$123456"
 
# 获取单元格并设置日期值
cell2 = sheet.Range.get_Item(4, 2)
cell2.DateTimeValue = DateTime.get_Now()
 
# 获取单元格并设置布尔值
cell3 = sheet.Range.get_Item(5, 2)
cell3.BooleanValue = True
 
# 获取单元格并设置公式
cell4 = sheet.Range.get_Item(6, 2)
cell4.Formula = "=SUM(B7)"
 
# 获取单元格,设置数字值,并设置数字格式
cell5 = sheet.Range.get_Item(7, 2)
cell5.NumberValue = 123456
cell5.NumberFormat = "#,##0.00"
 
# 获取单元格并设置公式数组
cell6 = sheet.Range.get_Item(8, 2)
cell6.HtmlString = "

Blue font 18 pixel size

" # 设置格式 cellRange = sheet.Range.get_Item(2, 2, 7, 2) cellRange.Style.Font.FontName = "Arial" cellRange.Style.Font.Size = 14 cellRange.Style.HorizontalAlignment = HorizontalAlignType.Left # 自动设置列宽 sheet.AutoFitColumn(2) # 保存文件 workbook.SaveToFile("/设置单元格的值.xlsx", FileFormat.Version2016) workbook.Dispose()

Python 设置 Excel 文件中单元格的值

Python 更新 Excel 文件中单元格的值

要更新 Excel 中的单元格的值,可以先获取需要更新的单元格,然后使用与上述相同的方法重新设置其值,从而完成更新操作。以下是具体步骤示例:

  • Python
from spire.xls import Workbook
 
# 创建一个 Workbook 类的对象
workbook = Workbook()
 
# 加载一个 Excel 文件
workbook.LoadFromFile("/设置单元格的值.xlsx")
 
# 获取指定工作表
sheet = workbook.Worksheets.get_Item(0)
 
# 获取指定单元格
cell = sheet.Range.get_Item(2, 2)
 
# 将单元格的值更改为数字
cell.NumberValue = 45150
# 设置单元格数字的格式
cell.NumberFormat = "[Green]#,##0;[RED]-#,##0"
 
# 保存工作簿
workbook.SaveToFile("/更新单元格的值.xlsx")

workbook.Dispose()

Python 更新 Excel 文件中单元格的值

Python 获取 Excel 文件中单元格的值

如果你想要直接读取单元格的值,仍然可以使用 CellRange.Value 属性。以下是读取 Excel 文件中单元格值的具体步骤示例:

  • Python
from spire.xls import Workbook
 
# 创建一个 Workbook 实例
workbook = Workbook()
 
# 加载 Excel 文件
workbook.LoadFromFile("/设置单元格的值.xlsx")
 
# 获取一个工作表
sheet = workbook.Worksheets.get_Item(0)
 
# 遍历第二列的第二行到第八行的单元格
for i in range(2, 8):
    # 获取当前单元格
    cell = sheet.Range.get_Item(i, 2)
    # 获取该单元格的值
    value = cell.Value
    # 输出值
    print(value)
 
workbook.Dispose()

Python 读取 Excel 文件中单元格的值

申请临时 License

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。