《全国计算机等级考试教程:一级计算机基础及MS Office应用》配套资源

  • 更新时间:
  • 3982人关注
  • 点击下载

给大家带来的是《全国计算机等级考试教程:一级计算机基础及MS Office应用》配套资源,介绍了关于计算机等级考试、Office应用、计算机等级考试方面的内容,本书是由人民邮电出版社出版,已被639人关注,由热心网友池忆梅 提供,目前本书在计算机等级考试类综合评分为:8.8分

编辑推荐

《全国计算机等级考试教程 一级计算机基础及MS Office应用》完全依据教育部考试中心新版考试大纲编写,囊括所有考试要点。
《全国计算机等级考试教程 一级计算机基础及MS Office应用》依据真考试卷全面分析考点的分布情况,标注重点、难点。
《全国计算机等级考试教程 一级计算机基础及MS Office应用》例题、习题全部源自无纸化考试题库。
《全国计算机等级考试教程 一级计算机基础及MS Office应用》可在配套无纸化考试模拟软件中做真题,做题环境与真实考试完全一致。
《全国计算机等级考试教程 一级计算机基础及MS Office应用》配套提供书中所有例题、习题的源文件,方便考生上机同步练习。

内容简介

本书严格依据教育部考试中心发布的新版《全国计算机等级考试一级计算机基础及MS Office应用考试大纲》进行编写,旨在帮助考生(尤其是非计算机专业的初学者)学习相关内容,顺利通过考试。
本书共6章,主要内容包括计算机基础知识、计算机系统、Word 2010的使用方法、Excel 2010的使用方法、PowerPoint 2010的使用方法,以及因特网基础与简单应用。书中所提供的例题、习题均源自无纸化考试题库。此外,本书还配套提供无纸化考试模拟软件,供考生模考与练习使用。
本书可作为全国计算机等级考试的培训教材,也可作为学习计算机基础知识和MS Office的参考书。

作者简介

未来教育教学与研究中心
一家专门从事教育产品策划、研发、销售的高新知识企业。专业研究等考22年,拥有着专业的教师团队,与高等教育、人民邮电、电子科技大学、北京理工大学等多个大型国家出版社合作,每年累积为数万余名考生服务。

目录

第1章 计算机基础知识1
1.1 计算机概述3
1.1.1 计算机发展简史3
1.1.2 计算机的特点4
1.1.3 计算机的应用5
1.1.4 计算机的分类6
1.1.5 计算机科学研究与应用7
1.1.6 未来计算机的发展趋势8
1.1.7 信息技术简介10
1.2 信息的表示与存储10
1.2.1 数制的基本概念10
1.2.2 数制间的转换11
1.2.3 计算机内的数据13
1.2.4 字符的编码14
1.3 多媒体技术简介17
1.3.1 多媒体的概念及特点17
1.3.2 多媒体个人计算机18
1.3.3 媒体的数字化18
1.3.4 多媒体的数据压缩19
1.4 计算机病毒与防治20
课后总复习22

第2章 计算机系统24
2.1 计算机硬件系统26
2.1.1 计算机的硬件组成26
2.1.2 计算机的结构31
2.1.3 计算机的主要性能指标32
2.2 计算机软件系统32
2.2.1 程序设计语言33
2.2.2 软件系统的组成34
2.3 操作系统简介35
2.3.1 操作系统的概念35
2.3.2 操作系统的功能36
2.3.3 操作系统的发展36
2.3.4 常用操作系统简介37
2.3.5 文件系统38
2.4 Windows 7操作系统42
2.4.1 初识Windows 7 43
2.4.2 Windows 7操作系统简介44
2.4.3 Windows基础操作与基本术语44
2.4.4 Windows的基本要素47
2.4.5 文件与文件夹60
2.4.6 Windows系统环境设置73
2.4.7 写字板80
2.4.8 Windows 7网络配置与应用83
2.4.9 系统维护与优化86
课后总复习88

第3章 Word 2010的使用90
3.1 Word 2010的基本概念和基础操作92
3.1.1 Word的启动和退出92
3.1.2 Word 2010的窗口组成93
3.1.3 Word文档操作94
3.1.4 文档的显示98
3.2 Word 编辑技术99
3.2.1 基础编辑99
3.2.2 复制和移动文本103
3.2.3 查找与替换105
3.2.4 多窗口编辑技术109
3.3 Word文档排版技术110
3.3.1 设置字符格式110
3.3.2 设置段落格式113
3.3.3 设置特殊格式115
3.4 Word表格排版技术120
3.4.1 创建表格120
3.4.2 表格操作121
3.4.3 修改表格结构123
3.4.4 设置表格格式128
3.4.5 表格内的数据操作131
3.5 页面排版133
3.5.1 页面设置133
3.5.2 打印与打印预览137
3.6 图形与图表138
3.6.1 插入图片文件138
3.6.2 图片格式的设置139
3.6.3 编辑图形文件140
3.6.4 使用文本框142
3.6.5 插入SmartArt图形143
课后总复习145

第4章 Excel 2010的使用147
4.1 Excel 2010概述149
4.1.1 Excel 2010软件简介149
4.1.2 Excel的基本功能149
4.2 Excel的基本概念和基础操作150
4.2.1 Excel的基本概念150
4.2.2 单元格操作151
4.2.3 工作表操作155
4.2.4 数据输入157
4.3 Excel的格式设置160
4.3.1 设置数字格式161
4.3.2 设置单元格格式162
4.3.3 设置条件格式166
4.3.4 使用单元格样式167
4.3.5 自动套用格式167
4.3.6 使用模板168
4.4 公式和函数168
4.4.1 公式计算168
4.4.2 复制公式170
4.4.3 函数172
4.5 图表174
4.5.1 基本概念174
4.5.2 建立图表176
4.5.3 图表的设置180
4.6 Excel的数据处理182
4.6.1 建立数据清单183
4.6.2 排序183
4.6.3 筛选数据185
4.6.4 分类汇总189
4.6.5 数据合并190
4.6.6 建立数据透视表191
4.7 保护数据193
4.7.1 保护工作簿和工作表193
4.7.2 隐藏工作簿和工作表194
4.8 打印工作表和超链接195
4.8.1 页面设置196
4.8.2 打印预览和打印196
4.8.3 打印197
4.8.4 建立超链接197
课后总复习199

第5章 PowerPoint 2010的使用200
5.1 PowerPoint 2010概述202
5.1.1 PowerPoint 2010软件简介202
5.1.2 PowerPoint的启动和退出202
5.1.3 PowerPoint窗口的组成202
5.1.4 PowerPoint的视图方式203
5.1.5 创建演示文稿204
5.2 幻灯片的基本操作207
5.2.1 选定幻灯片207
5.2.2 插入、删除和保存幻灯片208
5.2.3 改变幻灯片版式209
5.2.4 调整幻灯片的顺序209
5.3 修饰演示文稿209
5.3.1 用母版统一幻灯片的外观209
5.3.2 应用主题210
5.3.3 设置背景211
5.3.4 添加图形、表格和艺术字214
5.3.5 添加多媒体对象215
5.3.6 设置切换效果216
5.3.7 设置动画效果217
5.4 输出演示文稿219
5.4.1 放映演示文稿219
5.4.2 将演示文稿打包成CD 221
5.4.3 打印演示文稿221
课后总复习222

第6章 因特网基础与简单应用224
6.1 计算机网络的基本概念226
6.1.1 计算机网络简介226
6.1.2 计算机网络中的数据通信226
6.1.3 网络的形成与分类227
6.1.4 网络拓扑结构228
6.1.5 网络的硬件设备229
6.1.6 网络软件229
6.1.7 无线局域网230
6.2 因特网的基础知识230
6.2.1 因特网概述230
6.2.2 因特网的基本概念231
6.2.3 接入因特网233
6.3 Internet Explorer的应用234
6.3.1 浏览网页的相关概念234
6.3.2 初识IE 235
6.3.3 页面浏览237
6.3.4 信息的搜索242
6.3.5 使用FTP传输文件243
6.4 电子邮件245
6.4.1 E-mail概述245
6.4.2 Outlook 2010的基本设置246
6.5 流媒体255
课后总复习257

附录A 无纸化上机指导259
附录B 全国计算机等级考试一级计算机基础及MS Office应用考试大纲262
附录C 课后总复习参考答案265

展开阅读
精选笔记1:Java使用jacob将微软office中word、excel、ppt转成pdf

8小时16分钟前回答

本文实例为大家分享了Java使用jacob将微软office文档转成pdf的具体代码,供大家参考,具体内容如下

在使用jacb前,我们需要去下载 jacob.jar 和 jacob-1.18-x64.dll

其次,我们需要将jacob-1.18-x64.dll放入到jdk的bin目录下才可以使用

第三,使用jacb之前,我们需要确保office能正常使用

如果你现在使用的是maven工程,那么不好意思,现在还没有发布正式的jacb资源文件,我们需要自定的maven依赖,如下:

<dependency>
 <groupId>com.jacob</groupId>
 <artifactId>jacob</artifactId>
 <version>1.7</version>
 <scope>system</scope>
 <systemPath>${basedir}/../fileConvertApp/src/main/webapp/WEB-INF/lib/jacob.jar</systemPath>
</dependency>

然后需要注意的是jar的地址,需要根据自己的情况修改

接下来我们贴一下具体使用的代码片段

import java.io.File;
 
import org.apache.log4j.Logger;
 
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
 
/**
 * Converter Util
 * 
 * @author Jason
 *
 */
public class OfficeConverterUtil {
 
 /**
 * log
 */
 private static Logger logger = Logger.getLogger(OfficeConverterUtil.class);
 private static final int WDFO_RMATPDF = 17;
 private static final int XLTYPE_PDF = 0;
 private static final int PPT_SAVEAS_PDF = 32;
 public static final int WORD_HTML = 8;
 public static final int WORD_TXT = 7;
 public static final int EXCEL_HTML = 44;
 public static final int PPT_SAVEAS_JPG = 17;
 // private static final int msoTrue = -1;
 // private static final int msofalse = 0;
 
 /**
 * @param argInputFilePath
 * @param argPdfPath
 * @return
 */
 public static boolean officeFileConverterToPdf(String argInputFilePath, String argPdfPath) {
 if (argInputFilePath.isEmpty() || argPdfPath.isEmpty() || getFileSufix(argInputFilePath).isEmpty()) {
 logger.debug("输入或输出文件路徑有誤!");
 return false;
 }
 
 String suffix = getFileSufix(argInputFilePath);
 
 File file = new File(argInputFilePath);
 if (!file.exists()) {
 logger.debug("文件不存在!");
 return false;
 }
 
 // PDF如果不存在则创建文件夹
 file = new File(getFilePath(argPdfPath));
 if (!file.exists()) {
 file.mkdir();
 }
 
 // 如果输入的路径为PDF 则生成失败
 if (suffix.equals("pdf")) {
 System.out.println("PDF not need to convert!");
 return false;
 }
 
 if (suffix.equals("doc") || suffix.equals("docx") || suffix.equals("txt")) {
 return wordToPDF(argInputFilePath, argPdfPath);
 } else if (suffix.equals("xls") || suffix.equals("xlsx")) {
 return excelToPdf(argInputFilePath, argPdfPath);
 } else if (suffix.equals("ppt") || suffix.equals("pptx")) {
 return pptToPdf(argInputFilePath, argPdfPath);
 // return ppt2PDF(argInputFilePath, argPdfPath);
 }
 
 return false;
 }
 
 /**
 * converter word to pdf
 * 
 * @param wordPath
 * @param pdfPath
 * @return
 */
 public static boolean wordToPDF(String wordPath, String pdfPath) {
 ActiveXComponent msWordApp = new ActiveXComponent("Word.Application");
 msWordApp.setProperty("Visible", new Variant(false));
 
 Dispatch docs = Dispatch.get(msWordApp, "Documents").toDispatch();
 // long pdfStart = System.currentTimeMillis();
 Dispatch doc = Dispatch.invoke(docs, "Open", Dispatch.Method, new Object[] { wordPath, new Variant(false), new Variant(true) }, new int[1]).toDispatch();
 
 deletePdf(pdfPath);
 
 Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] { pdfPath, new Variant(WDFO_RMATPDF) }, new int[1]);
 // long pdfEnd = System.currentTimeMillis();
 logger.debug(wordPath + ",pdf转换完成..");
 if (null != doc) {
 Dispatch.call(doc, "Close", false);
 }
 return true;
 }
 
 /**
 * excel to pdf
 * 
 * @param inputFile
 * @param pdfFile
 * @return
 */
 public static boolean excelToPdf(String inputFile, String pdfFile) {
 ActiveXComponent activeXComponent = new ActiveXComponent("Excel.Application");
 activeXComponent.setProperty("Visible", false);
 
 deletePdf(pdfFile);
 
 Dispatch excels = activeXComponent.getProperty("Workbooks").toDispatch();
 Dispatch excel = Dispatch.call(excels, "Open", inputFile, false, true).toDispatch();
 Dispatch.call(excel, "ExportAsFixedFormat", XLTYPE_PDF, pdfFile);
 Dispatch.call(excel, "Close", false);
 activeXComponent.invoke("Quit");
 return true;
 }
 
 /**
 * ppt to pdf
 * 
 * @param inputFile
 * @param pdfFile
 * @return
 */
 public static boolean pptToPdf(String inputFile, String pdfFile) {
// ComThread.InitSTA();
 ActiveXComponent activeXComponent = new ActiveXComponent("PowerPoint.Application");
// activeXComponent.setProperty("Visible", new Variant(false));
 Dispatch ppts = activeXComponent.getProperty("Presentations").toDispatch();
 
 deletePdf(pdfFile);
 
 Dispatch ppt = Dispatch.call(ppts, "Open", inputFile, false, // ReadOnly
 true, // Untitled指定文件是否有标题
 true// WithWindow指定文件是否可见
 ).toDispatch();
 
// Dispatch ppt = Dispatch.invoke(ppts, "Open", Dispatch.Method, new Object[] { inputFile, new Variant(false), new Variant(true) }, new int[1]).toDispatch();
 
// Dispatch.call(ppt, "SaveAs", pdfFile, PPT_SAVEAS_PDF);
// Dispatch.call(ppt, "SaveAs", pdfFile, new Variant(PPT_SAVEAS_PDF));
// Dispatch.call(ppt, "SaveAs", pdfFile, new Variant(PPT_SAVEAS_PDF));
// Dispatch.invoke(ppt, "SaveAs", Dispatch.Method, new Object[] { pdfFile, PPT_SAVEAS_PDF }, new int[1]);
// Dispatch.invoke(ppt, "SaveAs", Dispatch.Method, new Object[] { new Variant(PPT_SAVEAS_PDF) }, new int[1]);
 Dispatch.callN(ppt, "SaveAs", new Variant(pdfFile));
 
 Dispatch.call(ppt, "Close");
 
 activeXComponent.invoke("Quit");
// ComThread.Release();
 return true;
 }
 
 /**
 * ppt to img
 * 
 * @param inputFile
 * @param imgFile
 * @return
 */
 public static boolean pptToImg(String inputFile, String imgFile) {
 // 打开word应用程序
 ActiveXComponent app = new ActiveXComponent("PowerPoint.Application");
 // 设置word不可见,office可能有限制
 // app.setProperty("Visible", false);
 // 获取word中国所打开的文档,返回Documents对象
 Dispatch files = app.getProperty("Presentations").toDispatch();
 // 调用Documents对象中Open方法打开文档,并返回打开的文档对象Document
 Dispatch file = Dispatch.call(files, "open", inputFile, true, true, false).toDispatch();
 // 调用Document对象的SaveAs方法,将文档保存为pdf格式
 // Dispatch.call(doc, "ExportAsFixedFormat", outputFile,
 // PPT_TO_PDF);
 Dispatch.call(file, "SaveAs", imgFile, PPT_SAVEAS_JPG);
 // 关闭文档
 // Dispatch.call(file, "Close", false);
 Dispatch.call(file, "Close");
 // 关闭word应用程序
 // app.invoke("Quit", 0);
 app.invoke("Quit");
 return true;
 }
 
 /**
 * get file extension
 * 
 * @param argFilePath
 * @return
 */
 public static String getFileSufix(String argFilePath) {
 int splitIndex = argFilePath.lastIndexOf(".");
 return argFilePath.substring(splitIndex + 1);
 }
 
 /**
 * subString file path
 * 
 * @param argFilePath
 *   file path
 * @return filePaths
 */
 public static String getFilePath(String argFilePath) {
 int pathIndex = argFilePath.lastIndexOf("/");
 return argFilePath.substring(0, pathIndex);
 }
 
 /**
 * 如果PDF存在则删除PDF
 * 
 * @param pdfPath
 */
 private static void deletePdf(String pdfPath) {
 File pdfFile = new File(pdfPath);
 if (pdfFile.exists()) {
 pdfFile.delete();
 }
 }
 
}

根据自己的调试,试验一下吧。

另外还有一段WPS转PDF,也贴一下,供大家参考一下

public void wps2PDF(String inputFile,String pdfFile) { 
  File sFile = new File(inputFile);
  File tFile = new File(pdfFile);
  ActiveXComponent wps = null;
  try {
   ComThread.InitSTA();
   wps = new ActiveXComponent("wps.application");
   ActiveXComponent doc = wps.invokeGetComponent("Documents").invokeGetComponent("Open", new Variant(sFile.getAbsolutePath())); 
   doc.invoke("ExportPdf", new Variant(tFile.getAbsolutePath())); 
   doc.invoke("Close"); 
   doc.safeRelease(); 
  } catch (Exception e) { 
   System.out.println(e.getMessage()); 
  } finally { 
   if (wps != null) { 
    wps.invoke("Terminate"); 
    wps.safeRelease(); 
   }
   ComThread.Release();
  } 
 } 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

展开阅读
精选笔记2:libreoffice python 操作word及excel文档的方法

4小时44分钟前回答

1、开始、关闭libreoffice服务;

开始之前同步字体文件时间,是因为创建soffice服务时,服务会检查所需加载的文件的时间,如果其认为时间不符,则其可能会重新加载,耗时较长,因此需事先统一时间。

使用时如果需要多次调用,最后每次调用均开启后关闭,否则libreoffice会创建一个缓存文档并越用越大,处理时间会增加。

class OfficeProcess(object):
  def __init__(self):
    self.p = 0
    subprocess.Popen('find /usr/share/fonts | xargs touch -m -t 201801010000.00', shell=True)

  def start_office(self):
    self.p = subprocess.Popen('soffice --pidfile=sof.pid --invisible --accept="socket,host=localhost,port=2002;urp;"', shell=True)
    while True:
      try:
        local_context = uno.getComponentContext()
        resolver = local_context.getServiceManager().createInstanceWithContext('com.sun.star.bridge.UnoUrlResolver', local_context)
        resolver.resolve('uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext')
        return
      except:
        print(ts(), "wait for connecting soffice...")
        time.sleep(1)
        continue

  def stop_office(self):
    with open("sof.pid", "rb") as f:
      try:
        os.kill(int(f.read()), signal.SIGTERM)
        self.p.wait()
      except:
        pass

2、init service manager

local_context = uno.getComponentContext()
    service_manager = local_context.getServiceManager()
    resolver = service_manager.createInstanceWithContext('com.sun.star.bridge.UnoUrlResolver', local_context)
    self.ctx = resolver.resolve('uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext')
    self.smgr = self.ctx.ServiceManager
    self.desktop = self.smgr.createInstanceWithContext('com.sun.star.frame.Desktop', self.ctx)

3、从二进制数据中读取doc文档

def ImportFromMemory(self, data):
    istream = self.smgr.createInstanceWithContext('com.sun.star.io.SequenceInputStream', self.ctx)
    istream.initialize((uno.ByteSequence(data), ))
    pv = PropertyValue()
    pv.Name = 'InputStream'
    pv.Value = istream
    self.doc = {'doc': []}
    try:
      self.document = self.desktop.loadComponentFromURL('private:stream/swriter', '_blank', 0, (pv, ))
      self.text = self.document.getText()
    except:
      self.text = None

4、读取doc文档中的数据

def ExportToJson(self):
    try:
      l = self.__ParseText(self.text, self.__Callback(self.doc['doc']))
      self.doc['length'] = l
    except:
      self.doc = {'doc': [], 'length': 0}
    return json.dumps(self.doc)

@staticmethod
  def __Callback(alist):
    def Append(sth):
      alist.append(sth)
    return Append

def __ParseText(self, text, func):
    l = 0
    text_it = text.createEnumeration()
    while text_it.hasMoreElements():
      element = text_it.nextElement()
      if element.supportsService('com.sun.star.text.Paragraph'):
        l += self.__ParseParagraph(element, func)
      elif element.supportsService('com.sun.star.text.TextTable'):
        l += self.__ParseTable(element, func)
      else:
        pass
    return l
def __ParseParagraph(self, paragraph, func):
    p = {'paragraph': []}
    l = 0
    paragraph_it = paragraph.createEnumeration()
    while paragraph_it.hasMoreElements():
      portion = paragraph_it.nextElement()
      if portion.TextPortionType == 'Text':
        l += self.__ParsePortionText(portion, self.__Callback(p['paragraph']))
      elif portion.TextPortionType == 'SoftPageBreak':
        pass
      elif portion.TextPortionType == 'TextField':
        l += self.__ParsePortionText(portion, self.__Callback(p['paragraph']))
      else:
        l += self.__ParseTextContent(portion, self.__Callback(p['paragraph']))
    if hasattr(paragraph, 'createContentEnumeration'):
      l += self.__ParseTextContent(paragraph, self.__Callback(p['paragraph']))
    p['length'] = l
    func(p)
    return l

  def __ParseTextContent(self, textcontent, func):
    l = 0
    content_it = textcontent.createContentEnumeration('com.sun.star.text.TextContent')
    while content_it.hasMoreElements():
      element = content_it.nextElement()
      if element.supportsService('com.sun.star.text.TextGraphicObject'):
        l += self.__ParsePortionGraphic(element, func)
      elif element.supportsService('com.sun.star.text.TextEmbeddedObject'):
        pass
      elif element.supportsService('com.sun.star.text.TextFrame'):
        l += self.__ParseFrame(element, func)
      elif element.supportsService('com.sun.star.drawing.GroupShape'):
        l += self.__ParseGroup(element, func)
      else:
        pass
    return l

  def __ParseFrame(self, frame, func):
    f = {'frame': []}
    l = self.__ParseText(frame.getText(), self.__Callback(f['frame']))
    f['length'] = l
    func(f)
    return l

  def __ParseGroup(self, group, func):
    l = 0
    for i in range(group.getCount()):
      it = group.getByIndex(i)
      if it.supportsService('com.sun.star.drawing.Text'):
        l += self.__ParseFrame(it, func)
      else:
        pass
    return l

  def __ParsePortionText(self, portion_text, func):
    func({'portion': portion_text.String, 'length': len(portion_text.String)})
    return len(portion_text.String)

  def __ParsePortionGraphic(self, portion_graphic, func):
    gp = self.smgr.createInstanceWithContext('com.sun.star.graphic.GraphicProvider', self.ctx)
    stream = self.smgr.createInstanceWithContext('com.sun.star.io.TempFile', self.ctx)
    pv1 = PropertyValue()
    pv1.Name = 'OutputStream'
    pv1.Value = stream
    pv2 = PropertyValue()
    pv2.Name = 'MimeType'
    pv2.Value = 'image/png'
    gp.storeGraphic(portion_graphic.Graphic, (pv1, pv2))
    stream.getOutputStream().flush()
    stream.seek(0)
    l = stream.getInputStream().available()
    b = uno.ByteSequence(b'')
    stream.seek(0)
    l, b = stream.getInputStream().readBytes(b, l)
    img = {'image': base64.b64encode(b.value).decode('ascii')}
    img['height'] = portion_graphic.Height
    img['width'] = portion_graphic.Width
    img['actualheight'] = portion_graphic.ActualSize.Height
    img['actualwidth'] = portion_graphic.ActualSize.Width
    img['croptop'] = portion_graphic.GraphicCrop.Top
    img['cropbottom'] = portion_graphic.GraphicCrop.Bottom
    img['cropleft'] = portion_graphic.GraphicCrop.Left
    img['cropright'] = portion_graphic.GraphicCrop.Right
    img['length'] = 0
    func(img)
    return 0

  def __ParseTable(self, table, func):
    l = 0
    try:
      matrix = self.__GetTableMatrix(table)
      seps = self.__GetTableSeparators(table)
      t = {}
      count = 0
      for ri in matrix.keys():
        t[ri] = {}
        for ci in matrix[ri].keys():
          t[ri][ci] = dict(matrix[ri][ci])
          del t[ri][ci]['cell']
          t[ri][ci]['content'] = []
          l += self.__ParseText(matrix[ri][ci]['cell'], self.__Callback(t[ri][ci]['content']))
          count += t[ri][ci]['rowspan'] * t[ri][ci]['colspan']
      if count != len(t) * len(seps):
        raise ValueError('count of cells error')
      func({'table': t, 'row': len(t), 'column': len(seps), 'length': l, 'tableid': self.table_id})
      self.table_id += 1
    except:
      l = 0
      print('discard wrong table')
    return l

  @staticmethod
  def __GetTableSeparators(table):
    result = [table.TableColumnRelativeSum]
    for ri in range(table.getRows().getCount()):
      result += [s.Position for s in table.getRows().getByIndex(ri).TableColumnSeparators]
    result = sorted(set(result))
    for i in range(len(result) - 1):
      result[i] += 1 if result[i] + 1 == result[i + 1] else 0
    return sorted(set(result))

  @staticmethod
  def __NameToRC(name):
    r = int(re.sub('[A-Za-z]', '', name)) - 1
    cstr = re.sub('[0-9]', '', name)
    c = 0
    for i in range(len(cstr)):
      if cstr[i] >= 'A' and cstr[i] <= 'Z':
        c = c * 52 + ord(cstr[i]) - ord('A')
      else:
        c = c * 52 + 26 + ord(cstr[i]) - ord('a')
    return r, c

  @staticmethod
  def __GetTableMatrix(table):
    result = {}
    for name in table.getCellNames():
      ri, ci = WordToJson.__NameToRC(name)
      cell = table.getCellByName(name)
      if ri not in result:
        result[ri] = {}
      result[ri][ci] = {'cell': cell, 'rowspan': cell.RowSpan, 'name': name}

    seps = WordToJson.__GetTableSeparators(table)
    for ri in result.keys():
      sep = [s.Position for s in table.getRows().getByIndex(ri).TableColumnSeparators] + [table.TableColumnRelativeSum]
      sep = sorted(set(sep))
      for ci in result[ri].keys():
        right = seps.index(sep[ci]) if sep[ci] in seps else seps.index(sep[ci] + 1)
        left = -1 if ci == 0 else seps.index(sep[ci - 1]) if sep[ci - 1] in seps else seps.index(sep[ci - 1] + 1)
        result[ri][ci]['colspan'] = right - left
    return result

5、写doc文档

self.doco = self.desktop.loadComponentFromURL('private:factory/swriter', '_blank', 0, ())
    self.texto = self.doco.getText()
    self.cursoro = self.texto.createTextCursor()
    self.cursoro.ParaBottomMargin = 500
def __WriteText(self, text, texto, cursoro):
    for it in text:
      if 'paragraph' in it:
        self.__WriteParagraph(it, texto, cursoro)
      elif 'image' in it:
        self.__WritePortionGraphic(it, texto, cursoro)
      elif 'table' in it:
        self.__WriteTable(it, texto, cursoro)

  def __WriteParagraph(self, paragraph, texto, cursoro):
    if paragraph['length'] > 0:
      if 'result' in paragraph:
        for it in paragraph['result']:
          texto.insertString(cursoro, it['trans_sen'], False)
      else:
        texto.insertString(cursoro, paragraph['paragraph'], False)
      texto.insertControlCharacter(cursoro, ControlCharacter.PARAGRAPH_BREAK, False)

  def __WritePortionGraphic(self, portion_graphic, texto, cursoro):
    png_base64 = portion_graphic['image']
    png = base64.b64decode(png_base64)
    gp = self.smgr.createInstanceWithContext('com.sun.star.graphic.GraphicProvider', self.ctx)
    istream = self.smgr.createInstanceWithContext('com.sun.star.io.SequenceInputStream', self.ctx)
    istream.initialize((uno.ByteSequence(png), ))
    pv = PropertyValue()
    pv.Name = 'InputStream'
    pv.Value = istream

    actualsize = uno.createUnoStruct('com.sun.star.awt.Size')
    actualsize.Height = portion_graphic['actualheight'] if 'actualheight' in portion_graphic else portion_graphic['height']
    actualsize.Width = portion_graphic['actualwidth'] if 'actualwidth' in portion_graphic else portion_graphic['width']
    graphiccrop = uno.createUnoStruct('com.sun.star.text.GraphicCrop')
    graphiccrop.Top = portion_graphic['croptop'] if 'croptop' in portion_graphic else 0
    graphiccrop.Bottom = portion_graphic['cropbottom'] if 'cropbottom' in portion_graphic else 0
    graphiccrop.Left = portion_graphic['cropleft'] if 'cropleft' in portion_graphic else 0
    graphiccrop.Right = portion_graphic['cropright'] if 'cropright' in portion_graphic else 0

    image = self.doco.createInstance('com.sun.star.text.TextGraphicObject')
    image.Surround = NONE
    image.Graphic = gp.queryGraphic((pv, ))
    image.Height = portion_graphic['height']
    image.Width = portion_graphic['width']
    image.setPropertyValue('ActualSize', actualsize)
    image.setPropertyValue('GraphicCrop', graphiccrop)
    texto.insertTextContent(cursoro, image, False)
    texto.insertControlCharacter(cursoro, ControlCharacter.PARAGRAPH_BREAK, False)

  def __WriteTable(self, table, texto, cursoro):
    tableo = self.doco.createInstance('com.sun.star.text.TextTable')
    tableo.initialize(table['row'], table['column'])
    texto.insertTextContent(cursoro, tableo, False)
#    texto.insertControlCharacter(cursoro, ControlCharacter.PARAGRAPH_BREAK, False)
    tcursoro = tableo.createCursorByCellName("A1")

    hitbug = False
    if table['row'] > 1:
      tcursoro.goDown(1, True)
      hitbug = tcursoro.getRangeName() == 'A1'

    for ri in sorted([int(r) for r in table['table'].keys()]):
      rs = table['table'][str(ri)]
      for ci in sorted([int(c) for c in rs.keys()]):
        cell = rs[str(ci)]
        if hitbug == False and (cell['rowspan'] > 1 or cell['colspan'] > 1):
          tcursoro.gotoCellByName(cell['name'], False)
          if cell['rowspan'] > 1:
            tcursoro.goDown(cell['rowspan'] - 1, True)
          if cell['colspan'] > 1:
            tcursoro.goRight(cell['colspan'] - 1, True)
          tcursoro.mergeRange()
        ctexto = tableo.getCellByName(cell['name'])
        if ctexto == None:
          continue
        ccursoro = ctexto.createTextCursor()
        ccursoro.CharWeight = FontWeight.NORMAL
        ccursoro.CharWeightAsian = FontWeight.NORMAL
        ccursoro.ParaAdjust = LEFT
        self.__WriteText(cell['content'], ctexto, ccursoro)

6、生成二进制的doc文档数据

    streamo = self.smgr.createInstanceWithContext('com.sun.star.io.Pipe', self.ctx)
    self.doco.storeToURL('private:stream', (PropertyValue('FilterName', 0, 'MS Word 2007 XML', 0), PropertyValue('OutputStream', 0, streamo, 0)))
    streamo.flush()
    _, datao = streamo.readBytes(None, streamo.available())

7、从doc文档数据生成pdf的二进制数据

    streamo = self.smgr.createInstanceWithContext('com.sun.star.io.Pipe', self.ctx)
    self.doco.storeToURL('private:stream', (PropertyValue('FilterName', 0, 'writer_pdf_Export', 0), PropertyValue('OutputStream', 0, streamo, 0)))
    streamo.flush()
    _, datap = streamo.readBytes(None, streamo.available())

8、读取excel二进制数据

  def ImportFromMemory(self, data):
    istream = self.smgr.createInstanceWithContext('com.sun.star.io.SequenceInputStream', self.ctx)
    istream.initialize((uno.ByteSequence(data), ))
    pv = PropertyValue()
    pv.Name = 'InputStream'
    pv.Value = istream
    self.doc = {'doc': []}
    try:
      print("before loadComponentFromURL")
      self.document = self.desktop.loadComponentFromURL('private:stream/scalc', '_blank', 0, (pv, ))
      self.sheets = self.document.getSheets()
      print("ImportFromMemory done")
    except:
      print("ImportFromMemory failed")
      self.sheets = None

9、读取excel的文本数据

  def ExportToJson(self):
    try:
      l = self.__ParseText(self.sheets, self.__Callback(self.doc['doc']))
      self.doc['length'] = l
    except:
      self.doc = {'doc': [], 'length': 0}
    return json.dumps(self.doc)
  def __ParseText(self, sheets, func):
    l = 0
    sheets_it = sheets.createEnumeration()
    while sheets_it.hasMoreElements():
      element = sheets_it.nextElement()
      if element.supportsService('com.sun.star.sheet.Spreadsheet'):
        l += self.__ParseSpreadsheet(element, func)
    return l

  def __ParseSpreadsheet(self, spreadsheet, func):
    l = 0
    p = {'spreadsheet': []}
    visible_cells_it = spreadsheet.queryVisibleCells().getCells().createEnumeration()
    while visible_cells_it.hasMoreElements():
      cell = visible_cells_it.nextElement()
      type = cell.getType()
      if type == self.EMPTY:
        print("cell.type==empty")
      elif type == self.VALUE:
        print("cell.type==VALUE", "value=", cell.getValue(), cell.getCellAddress ())
      elif type == self.TEXT:
        print("cell.type==TEXT","content=", cell.getString().encode("UTF-8"), cell.getCellAddress ())
        l += self.__ParseCellText(spreadsheet, cell, self.__Callback(p['spreadsheet']))
        print("__ParseCellText=", p)
      elif type == self.FORMULA:
        print("cell.type==FORMULA", "formula=", cell.getValue())
    p['length'] = l
    func(p)
    return l

  def __ParseCellText(self, sheet, cell, func):
    try:
      x = cell.getCellAddress().Column
      y = cell.getCellAddress().Row
      sheetname = sheet.getName()
    except:
      x = -1
      y = -1
      sheetname = None
    func({'celltext': cell.getString(), 'x': x, 'y': y, 'sheetname': sheetname, 'length': len(cell.getString())})
    return len(cell.getString())
     self.EMPTY = uno.Enum("com.sun.star.table.CellContentType", "EMPTY")
    self.TEXT = uno.Enum("com.sun.star.table.CellContentType", "TEXT")
    self.FORMULA = uno.Enum("com.sun.star.table.CellContentType", "FORMULA")
    self.VALUE = uno.Enum("com.sun.star.table.CellContentType", "VALUE")

10、替换excel的文本信息

  def ImportFromJson(self, data):
    doc = json.loads(data)
    try:
      self.__WriteText(doc['doc'])
    except:
      pass
def __WriteText(self, text):
    print("__WriteText begin:", text)
    sheet = None
    for it in text:
      if 'paragraph' in it and 'sheetname' in it:
        if sheet == None or sheet.getName() != it['sheetname']:
          try:
            sheet = self.sheets.getByName(it['sheetname'])
            print("getsheet:", it['sheetname'], "=", sheet.getName())
          except:
            sheet = None
            continue
        self.__WriteParagraph(it, sheet)

  def __WriteParagraph(self, paragraph, sheet):
    print("__WriteParagraph")
    if paragraph['length'] > 0:
      try:
        x = paragraph['x']
        y = paragraph['y']
        print("getcell:", x, y)
        cell = sheet.getCellByPosition(x, y)
        print("getcell done")
      except:
        return
      if 'result' in paragraph:
        for it in paragraph['result']:
          print("cell=", cell.getString())
          cell.setString(it['trans_sen'])
          print("cell,", cell.getString(), ",done")

11、生成excel文档二进制数据

     streamo = self.smgr.createInstanceWithContext('com.sun.star.io.Pipe', self.ctx)
    self.document.storeToURL('private:stream', (PropertyValue('FilterName', 0, 'Calc MS Excel 2007 XML', 0), PropertyValue('OutputStream', 0, streamo, 0)))
    streamo.flush()
    _, datao = streamo.readBytes(None, streamo.available())

12、生成excel的pdf文档

    streamo = self.smgr.createInstanceWithContext('com.sun.star.io.Pipe', self.ctx)
    self.document.storeToURL('private:stream', (PropertyValue('FilterName', 0, 'calc_pdf_Export', 0), PropertyValue('OutputStream', 0, streamo, 0)))
    streamo.flush()
    _, datap = streamo.readBytes(None, streamo.available())

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

展开阅读

计算机等级考试相关资源

  • 《全国计算机应用水平考试培训教程 会计电算化(初级)》电子资源

    《全国计算机应用水平考试培训教程 会计电算化(初级)》电子资源

    编辑推荐 完善的知识体系:每章开始会对本章内容的考试情况进行介绍,如分值、重难点内容等;然后通过本章知识体系一览表将本章所有内容进行归纳汇总,使考生清楚需要学习的内容和应该重点掌握的内容等,以便提高学习效率。n 详细的操作讲解:NIT注重实际操作和应用,除必备理论知识外,本书每一章都通过操作讲解的方式,配以清晰的操作步骤和对应的图片示例,让考生可以身临其境地进行学习,更为深刻地掌握各种会计电算化软件和系统的

    大小:113.7M计算机考试

    立即下载
  • 网络工程师考试辅导/全国计算机技术与软件专业技术资格(水平)考试辅导用书

    网络工程师考试辅导(2009版) 丛书名:计算机技术与软件专业技术资格(水平)考试辅导用书 作者:李磊 清华大学 出版日期:2009-9-1 本书是全国计算机技术与软件专业技术资格(水平)考试辅导用书。本书作者是高校计算机网络课程的授课教师,对网络工程师考试有较深的了解。作者以2007年出版的《网络工程师考前辅导》为基础,根据网工2009版大纲与培训指南的要求修改、完善和补充了相关知识,使全书的内容更完整、组织更合理、表达更顺畅。本书

    大小:52.4MB网络工程

    立即下载
  • 网络工程师考试同步辅导(计算机与网络知识篇)

    网络工程师考试同步辅导(计算机与网络知识篇)

    网络工程师考试同步辅导(计算机与网络知识篇) 作者:解凯 清华大学 出版日期:2005-6-19 本书按照人事部、信息产业部最新颁布的全国计算机技术与软件专业技术资格(水平)考试大纲和指定教材编写。全书分为12章,内容包括:计算机基础知识,计算机网络概论,数据通信基础,广域通信网,局域网和城域网。网络互联和互联网,网络安全,网络操作系统,接入网技术,网络管理,标准化和信息化,计算机专业英语等,主要从考试大纲要求、考点辅导、

    大小:47.5MB网络工程

    立即下载
  • 《2019年全国计算机等级考试一本通 二级Visual Basic》题库

    《2019年全国计算机等级考试一本通 二级Visual Basic》题库

    内容简介 为了帮助考生在短时间内顺利通过考试,全国计算机等级考试命题研究中心和未来教育教学与研究中心联合策划、编写了本书。 全书共7章,主要内容包括考试指南、公共基础知识、计算机基础知识、利用Word 2010高效创建电子文档、使用Excel 2010创建并处理电子表格、通过PowerPoint 2010制作演示文稿、新增真考试题及解析。 本书配套光盘提供的模拟考试系统包含全套真考题库试题,接近模拟真考环境,带领考生提前进入考场,其自动评分的功能可

    大小:53.94 MBVisualBasic

    立即下载
  • 《全国计算机应用水平考试培训教程 财税知识基础应用》电子资源

    《全国计算机应用水平考试培训教程 财税知识基础应用》电子资源

    编辑推荐 完善的知识体系:每章开始会对本章内容的考试情况进行介绍,如分值、重难点内容等;然后通过本章知识体系一览表将本章所有内容进行归纳汇总,使考生清楚需要学习的内容和应该重点掌握的内容等,以便提高学习效率。n 丰细的案例分析:NIT注重知识的理解和应用,本书每一章都通过大量案例分析,详细且全面地对知识结构进行了梳理,让考生可以高效地进行学习,从而更为深刻地掌握各种财税基础知识的实际应用方法。n 丰富的考题示

    大小:47M计算机考试

    立即下载
  • 《2020年全国计算机等级考试一本通:二级Access》电子资源

    《2020年全国计算机等级考试一本通:二级Access》电子资源

    编辑推荐 1.直击考点,一本速通。 (1)本书将二级Access的无纸化考点讲解、经典真题分析、套题演练等融为一体,真正贯彻一本通的理念。 (2)分析、总结了上机试题的命题规律、考点,能帮助考生快速掌握上机考试的解题方法。 (3) 与真考题库同步更新,完全覆盖无纸化考试要点,命中率极高。 (4) 名师解析:本书的所有试题答案及解析均有名师编写,权威可信 。 2.书盘结合,通过无忧 (1)模拟考场:完全模拟真考环境,限时做题,自动评分

    大小:61 MBAccess

    立即下载

学习笔记

4小时13分钟前回答

利用openoffice+jodconverter-code-3.0-bate4实现ppt转图片

本文实例为大家分享了openoffice+jodconverter-code-3.0-bate4实现ppt转图片的具体代码,供大家参考,具体内容如下 安装openoffice4 (用于把文档(ppt)转成pdf)根据系统的位数安装 使用jodconverter-core3.0-beta-4(要上传maven本地仓库) 安装ImageMagick:yum install ImageMagick(用于pdf转图片) 安装pdftotext 用于提取文字大纲 yuminstallpoppler-utils perl脚本(用于提取pdf文档的文字大纲) 使用jodconverter调用OpenOffice 将office文档转换为PDF时。如果转换程序异常中止而OpenOffice并没有停止运行的话。 openoffice 1、启动tomcat时,启动openoffice服务(个人感觉有风险问题) 2、手工用命令,启动openoffice服务,在使用链接服务(推荐) package com.do……

1小时34分钟前回答

Java实现在线预览的示例代码(openOffice实现)

简介 之前有写了poi实现在线预览的文章,里面也说到了使用openOffice也可以做到,这里就详细介绍一下。 我的实现逻辑有两种: 一、利用jodconverter(基于OpenOffice服务)将文件(.doc、.docx、.xls、.ppt)转化为html格式。 二、利用jodconverter(基于OpenOffice服务)将文件(.doc、.docx、.xls、.ppt)转化为pdf格式。 转换成html格式大家都能理解,这样就可以直接在浏览器上查看了,也就实现了在线预览的功能;转换成pdf格式这点,需要用户安装了Adobe Reader XI,这样你会发现把pdf直接拖到浏览器页面可以直接打开预览,这样也就实现了在线预览的功能。 将文件转化为html格式或者pdf格式 话不多说,直接上代码。 package com.pdfPrevie……

4小时27分钟前回答

Java使用openOffice对于word的转换及遇到的问题解决

一:需求详情: OpenOffice.org 是一套跨平台的办公室软件套件,能在 Windows、Linux、MacOS X (X11)、和 Solaris 等操作系统上执行。它与各个主要的办公室软件套件兼容。OpenOffice.org 是自由软件,任何人都可以免费下载、使用、及推广它。 公司需要存储合同文件,用户上传word文档的合同,通过openOffice去把word转换为pdf、再把pdf转换为图片格式,并分别存储。因为openOffice的转换需要耗费挺大的内存,所以设计为task任务,凌晨自动转换。 记录本次需求完成的时候遇到的问题。 openoffice既有windows版本也有linux版。不用担心生产环境是linux系统。 关于linux系统安装openoffice软件请参照:点击这里 二:过程 1:本地环境编……