精华内容
下载资源
问答
  • 创建新word文档五大方法.docx
  • 手动创建新文档方法

    手动创建新文档的方法

    	CWinApp* pApp = AfxGetApp();
    	POSITION curTemplatePos = pApp->GetFirstDocTemplatePosition();
    	if (curTemplatePos != NULL)
    	{
    		CDocTemplate* curTemplate = pApp->GetNextDocTemplate(curTemplatePos);
    		curTemplate->OpenDocumentFile(NULL);
    	}


     

     各个窗体的位置信息被保存在注册表中,名称是通过XXXX.cpp中的SetRegistryKey方法定义的。

    展开全文
  • C#调用NPOI创建Excel文档样式设置方法总结 一、描边与居中 #region 描边与居中-style ICellStyle style1 = hssfworkbook.CreateCellStyle(); style1.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; ...

    C#调用NPOI创建Excel文档样式设置方法总结

    一、描边与居中
    #region 描边与居中-style
      ICellStyle style1 = hssfworkbook.CreateCellStyle();
      style1.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
      style1.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
      style1.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
      style1.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
      style1.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
      style1.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
    #endregion
    
    二、描边,居中,加粗
    #region 描边,居中,加粗-style
      ICellStyle style2//Style2为继承了Style1的新样式
      = hssfworkbook.CreateCellStyle();
      style2.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;//Style1的样式
      style2.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
      style2.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
      style2.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
      style2.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
      style2.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
      IFont font1 = hssfworkbook.CreateFont();
      font1.Boldweight = (short)FontBoldWeight.Bold;
      style2.SetFont(font1);
    #endregion
    
    三、描边,居中,加粗,设字体大小
    #region 描边,居中,加粗,设字体大小-style
      ICellStyle style3//Style3为继承了Style2的新样式
      = hssfworkbook.CreateCellStyle();
      style3.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;//Style1的样式
      style3.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
      style3.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
      style3.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
      style3.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
      style3.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
      IFont font2 = hssfworkbook.CreateFont();
      font2.Boldweight = (short)FontBoldWeight.Bold;
      font2.FontHeightInPoints = 14;
      style3.SetFont(font2);
    #endregion
    
    四、给单元格描边
    #region 描边与居中
      CellRangeAddress regionAll = new CellRangeAddress(0, sheet.LastRowNum, 0, endLoc);//从第一行第一列到最后一行最后一列
      for (int i = regionAll.FirstRow; i <= regionAll.LastRow; i++)
      {
        IRow row = HSSFCellUtil.GetRow(i, (HSSFSheet)sheet);
        for (int j = regionAll.FirstColumn; j <= regionAll.LastColumn; j++)
        {
          ICell singleCell = HSSFCellUtil.GetCell(row, j);
    
          if (i == regionAll.FirstRow)//第一行单元格用style3
          {
            singleCell.CellStyle = style3;
          }
          else if (i == regionAll.FirstRow + 1 || j == regionAll.FirstColumn)//第二行用style2;第一列用style2
          {
            singleCell.CellStyle = style2;
          }
          else//其它行列用style1
          {
            singleCell.CellStyle = style1;
          }
        }
      }
    #endregion
    

    实际应用需要给创建好的表格描边。只需先确定好整个表格的区域,然后根据这个区域的行列值循环为每个单元格描边即可。

    展开全文
  • Qt中使用已有模板创建新Word文档

    千次阅读 2018-07-14 22:07:03
    本文主要介绍如何Qt下操作Word

    在这篇帖子中我将详细讲述如何在Qt环境下使用已有Word模板文件创建新的文档,并对模板文档内容填充。目前,我只对替换文字和对表格进行操作进行了介绍,如何在文档插入图片未在本文中提及。

    开发环境

    本文中使用的开发环境是Qt5.10.0。由于本文中的实现方式是通过COM组件操作Word,需要在.pro文件中添加QT += axcontainer,在Qt4的版本中与Qt5是有点区别的,在Qt4中添加CONFIG += qaxcontainer。

    从代码中看过程

    多余的就不说了,具体过程看注释吧。

    WordEngine.h

    #ifndef WORDENGINE_H
    #define WORDENGINE_H
    
    #include <QObject>
    #include <QAxObject>
    #include <QAxWidget>
    
    class WordEngine : public QObject
    {
        Q_OBJECT
    public:
        explicit WordEngine(QObject *parent = 0);
    
    public slots:
        bool open(const QString &file);//打开文档
        void save(const QString &savePath);//保存并关闭文档
    
        void replaceText(const QString &label,const QString &text);//替换文档中标签出的文字
        void alterTableRowCount(const QString &tabel, const int rowCount);//在表个中添加新行
        void fillTableCell(const QString &tabel,const QList<QStringList> &data);//填充表格内容
    
    private:
        QAxWidget *_word;//word主程序
        QAxObject *_workDocument;//工作簿
        bool _isOpen;//文档打开状态
    
        QMap<QString,int> _tabelIndex;//文档中的表格索引,注意word中表格的索引值是从1开始的,这里根据不同的情况单独实现
    };
    
    #endif // WORDENGINE_H
    

    WordEngine.cpp

    #include "WordEngine.h"
    #include "qt_windows.h"
    #include <QMessageBox>
    
    WordEngine::WordEngine(QObject *parent) : QObject(parent)
    {
        _word = NULL;
        _workDocument = NULL;
        _isOpen = false;
    
        /// 初始化表格索引,在word中可以直接获取表格的索引而不是书签来编辑表格内容,
        /// 所以,这里的索引是需要用户手动进行维护的
        _tabelIndex["table1"] = 1;
        _tabelIndex["table2"] = 2;
    }
    
    /// Summary:根据传入的模板文件地址创建新的word文档并打开
    /// parameters:
    ///     file:.dot模板文件的绝对地址,这里只能使用绝对地址,否则找不到文件,并且建议使用QDir::toNativeSeparators()将地址中的'/'转换成'\'
    /// return:
    ///     文档是否打开
    bool WordEngine::open(const QString& file)
    {
        _word = new QAxWidget("word.Application");
        QAxObject *document = _word->querySubObject("Documents");//获取所有打开的文档
        if (!document)
            return false;
    
        document->dynamicCall("Add(QString)",file);//使用模板文件创建新的文档
        _workDocument = _word->querySubObject("ActiveDocument");//激活文档
    
        if (_workDocument)
            _isOpen = true;
        else
            _isOpen = false;
    
        if (!_isOpen)
        {
            QMessageBox box(QMessageBox::Information,QString("提示"),QString("未找到模板文件:%0").arg(file));
            box.addButton(QString("确定"),QMessageBox::AcceptRole);
            box.exec();
        }
    
        return _isOpen;
    }
    
    /// Summary:将文档保存到指定地址,并关闭word程序
    /// parameters:
    ///     savePath:word的保存地址
    void WordEngine::save(const QString &savePath)
    {
        //保存
        if (_isOpen && _workDocument)
        {
            _workDocument->dynamicCall("SaveAs (const QString&)",savePath);
        }
    
        if (_word)
        {
            _word->setProperty("DisplayAlerts",true);
        }
    
        //关闭文档
        if (_workDocument)
        {
            _workDocument->dynamicCall("Close(bool)",true);
            delete _workDocument;
            _workDocument = NULL;
        }
    
        //推出word程序
        if (_word)
        {
            _word->dynamicCall("Quit()");
            delete _word;
            _word = NULL;
        }
    
        _isOpen = false;
    }
    
    /// Summary:替换指定书签处的内容
    /// parameters:
    ///     label:书签名称,这里的书签对应的是在word中的插入->书签
    ///     text:内容
    void WordEngine::replaceText(const QString &label, const QString &text)
    {
        if (!_workDocument)
            return ;
    
        //查找书签
        QAxObject *bookmark = _workDocument->querySubObject("Bookmarks(QString)",label);
        if (bookmark)
        {
            //选定书签,并替换内容
            bookmark->dynamicCall("Select(void)");
            bookmark->querySubObject("Range")->setProperty("Text",text);
            delete bookmark;
        }
    }
    
    /// Summary:调整表格行数,目前只能插入不能删除,在word模板中,在表格中至少需要有一行内容空行,否则在插入新行的时候,数据内容会跟随表头行的格式,有时候导出结果会非常难看
    /// parameters:
    ///     tabel:表格名称
    ///     rowCount:行数
    void WordEngine::alterTableRowCount(const QString &tabel, const int rowCount)
    {
        if (NULL == _workDocument) return;
        QAxObject *table = _workDocument->querySubObject("Tables(int)",_tabelIndex.value(tabel));//获取表格
        if (NULL == table) return;
    
        //获取表格目前的行数
        QAxObject *rows = table->querySubObject("Rows");
        qint32 count = rows->dynamicCall("Count").toInt();
    
        //插入行
        for (int i = count - 1; i < rowCount; ++i)
        {
            rows->querySubObject("Add()");
        }
    }
    
    /// Summary:填充表格内容
    /// parameters:
    ///     tabel:表格名称
    ///     data:内容
    void WordEngine::fillTableCell(const QString &tabel, const QList<QStringList> &data)
    {
        if (NULL == _workDocument) return;
        QAxObject *table = _workDocument->querySubObject("Tables(int)",_tabelIndex.value(tabel));//获取表格
        if (NULL == table) return;
    
        //获取表格目前的行数
        QAxObject *rows = table->querySubObject("Rows");
        qint32 rowCount = rows->dynamicCall("Count").toInt();
    
        //获取表格目前的列数
        QAxObject *columns = table->querySubObject("Columns");
        qint32 columnCount = columns->dynamicCall("Count").toInt();
    
        //当前表格行数小于数据的行数,调整到数据的行数
        if (data.size()>rowCount)
        {
            alterTableRowCount(tabel,data.size());
        }
    
        //填充表格内容
        for (int row = 0; row < data.size(); ++row)
        {
            for (int column = 0; column < data.at(row).size() && column < columnCount; ++column)
            {
                QAxObject *cell=table->querySubObject("Cell(int,int)",row+2,column+1);//获取单元格,注意word中的索引是从1开始的,再加上表头row应该+2
                if(!cell) return;
                cell->dynamicCall("Select(void)");
                cell->querySubObject("Range")->setProperty("Text",data.at(row).at(column));
                delete cell;
            }
        }
    }                       
    

    不足之处

    这种方法读写文档的效率非常低,但是在Qt中Qwidget的派生类都无法在子线程中运行,所以当文件内容比较多的时候我们能做的只有等……或许你有更好的方法,请一定告诉我(_ _)。゜zzZ

    以上就是如何在Qt中创建Word文档并修改word文档内容。如有不明白的地方欢迎留言或通过下面的邮件地址交流,若帖子中有错误的地方同样欢迎留言批评指正,在此谢过路过的各位大神。

    展开全文
  • 文档创建,文件的打开, 保存

    千次阅读 2008-10-26 22:41:00
    许多常用功能,例如文档创建,文件的打开,保存等操作的大部分代码都由应用框架来完成.这些操作对于开发软件的用户而言,是透明的. Microsoft公司的设计Visual C++的初衷是尽量向用户提供尽可能简单的接口,但是,正是...
      
    

        Visual C++应用框架提供的强大功能,为我们的程序开发提供了极大的方便,利用其应用生成器可以很轻松地生成应用程序的框架.许多常用功能,例如文档的创建,文件的打开,保存等操作的大部分代码都由应用框架来完成.这些操作对于开发软件的用户而言,是透明的. Microsoft公司的设计Visual C++的初衷是尽量向用户提供尽可能简单的接口,但是,正是因为应用框架的这一透明性,使Visual C++的运行流程显得非常神秘,当涉及这些Visual C++已经提供的功能模块的软件开发时,用户(特别是那些刚刚接触Visual C++的)不知道什么时候该使用什么接口函数,想改变Visual C++的一些默认操作时也不知道该从哪儿下手,使开发的难度增加.
    本人在编程实践中发现,可以通过Visual C++自带的强大的Debug调试工具,跟踪应用框架代码,从而得出应用框架操作的部分流程.具体实现是:利用Visual C++应用生成器生成应用框架代码,启动 Classwizard,在各个类中加入欲跟踪的接口函数,编辑接口函数,设置断点,再启动Debug进行单步跟踪调试.利用这一方法,我们还可以跟踪 Visual C++提供的例子代码.在跟踪过程中,Visual C++的核心代码是禁止跟踪调试的,我们只要跳过就行.
    以下是本人对多文档应用程序的文档创建,文件的打开, 保存(另存为)操作的跟踪结果,单文档应用与多文档应用的操作流程基本相似,只是用CSingleDocTemplate类的同名函数来替代对 CMultiDocTemplate类同名函数的调用.以下说明中,"应用程序"均指用户生成的基于应用框架的实际程序,"用户代码"指用户在接口函数中加入的代码.
    一.创建文档
    ON_COMMAND(ID_FILE_NEW,CWinApp::OnFileNew)
    入口:CWinApp::OnFileNew
    调用:CdocManager::OnFileNew()
    1.判断有无文档模板,无则函数返回;
    2.判断是否有多个文档模板,如有则启动文档模板选择对话框, 让用户选择一个模板后,返回模板指针.
    3.由模板指针访问CMultiDocTemplate::OpenDocumentFile()
    31.创建新文档对象
    32.创建与新文档对象对应的子框架,构筑子框架,文档和视窗之间的关系
    33.调用应用程序的OnNewDocument()
    a.调用CDocument::OnNewDocument()
    调用应用程序的DeleteContents();
    b.用户代码
    34.调用InitialUpdateFrame()显示视窗
    35.返回文档指针
    4.返回

    二.打开文档
    ON_COMMAND(ID_FILE_OPEN,CWinApp::OnFileOpen)
    入口:CWinApp::OnFileOpen
    调用:CDocManager::OnFileOpen()
    1.弹出对话框让用户选择待打开的文件,返回该文件的全路径名称, 供下面函数调用时使用.
    2.调用应用程序的OpenDocumentFile(LPCTSTR lpszFileName)
    21.用户代码
    22.调用CWinApp::OpenDocumentFile(lpszFileName),
    调用CWinApp::OpenDocumentFile(lpszFileName),
    调用CDocManager::OpenDocumentFile
    a.判断有无该文件的打开文档对象,有则激活该窗口并返回
    b.调用CMultiDocTemplate::OpenDocumentFile()
    b1.创建新的文档对象,创建新文档对象对应的子框架
    b2.调用应用程序的OnOpenDocument()
    (1)调用CDocument::OnOpenDocument()
    .打开文件对象
    .调用应用程序的DeleteDontents();
    .建立与此文件对象相关联的CArchive对象
    .调用应用程序文档对象的Serialize()函数
    .关闭CArchive对象,文件对象
    (2)显示该文件窗口
    b3.返回

    三.文件保存
    ON_COMMAND(ID_FILE_SAVE,CDocument::OnFileSave)
    入口:CDocument::OnFileSave()
    调用:CDocument::DoFileSave()
    如果当前文档对应的文件名为空或者为只读文件,以NULL 为参数调用CDocument::DoSave(NULL),否则,以当前文档对应的文件名为参数调用CDocument::DoSave(m_strPathName);

    ON_COMMAND(ID_FILE_SAVEAS,CDocument::OnFileSaveAs)
    入口:CDocument::OnFileSaveAs()
    以NULL为参数直接调用CDocument::DoSave(NULL);
    CDocument::DoSave(LPCTSTR lpszPathName,BOOL bReplace);
    如果lpszPathName为NULL,
    1.设定应用程序默认的文件名
    2.打开通用文件保存对话框,由用户设定保存文件的名字,并返回该文件名
    如果lpszPahtName不为NULL,则跳为以上两步,直接进入下一步
    3.调用应用程序的OnSaveDocument()
    31.用户代码
    32.调用CDocument::OnSaveDocument()
    a.创建或打开文件对象
    b.建立相对应的CArchive对象
    c.调用应用程序文档对象的序列化函数Serialize()
    d.关闭文件对象,CArchive对象
    e.设置文件未修改标志
    4.返回

    展开全文
  • 使用elasticsearch-head创建新文档

    千次阅读 2017-08-02 11:21:30
    1、RESTful接口使用方法 为了方便直观我们使用Head插件提供的接口进行演示,实际上内部调用的RESTful接口。  RESTful接口URL的格式: http://localhost:9200///[] 其中index、type是必须提供的。
  • 文档在 es 中是不可变的——我们不能修改他们。如果要更新已经存在的文档,我们可以使用《索引文档》章节提到的API重建索引(reindex)或者替换掉它。 curl -X PUT "localhost:9200/website/blog/123" -H ...
  • 首先创建一个空白的脚本文档,并保存硬盘上某个位置。 接着输入脚本代码: //定义一个变量[Width],表示新文档的宽度。 var width = 560; //定义一个变量[height],表示新文档的高度。 var height = 560; //...
  • 创建 ActiveX 文档

    千次阅读 2004-12-14 22:28:00
    1.使用方法 NavigateTo 时,必须包含 URL 的协议部分。例如,缺省情况下,上面的代码将定位至 txtURL TextBox 控件的 Text 属性的属性值:“http://www.microsoft.com”。2.请记住下面的重要事实:作为 ...
  • C# 创建PDF文档

    千次阅读 2018-05-22 11:38:43
    下面的示例将介绍如何C#中创建PDF文档,工具/原料Free Spire.PDF for .NETVS2013(版本可自选)方法/步骤下载安装该类库(安装完成后,注意项目中引用Spire.Pdf.dll,dll可以安装路径下的Bin文件夹中获取。...
  • 快速创建HTML文档的三种方法

    千次阅读 2020-06-14 20:08:35
    有时需要使用或不使用JavaScript 即时创建HTML文档 。 无论目标是显示确认页面还是包含整个页面的iframe,如果文档足够简单,则可以轻松地将其放在一起... 您可能会对我将下面显示的某些方法感兴趣,其中第一种甚...
  • 相信我们企业内部的环境中已经部署了微软最新的OS平台,Windows 7和Windows 2008 R2,这些OS平台上使用IRM功能时,您有可能遇到创建、打开RMS文档非常缓慢的情况,据测试,office程序会停滞大概1到2分钟才...
  • ArcGIS Engine+C#实例开发教程 By Daniel 实习四调用新创建类封装方法实现Mxd 文档操作 1新建类库 1.1 打开实习2-3 所建项目解决方案管理器中右击选择 MyForm.cs|添加|新建项 1.2 弹出对话框中点击 Visual C#...
  • 创建空白文档失败的原因

    万次阅读 2010-09-03 17:09:00
    创建空白文档失败的原因
  • 使用Doxgen创建Xcode文档

    万次阅读 2011-03-03 17:58:00
    文档集为Xcode开发者提供了一个查找各种文档的便捷方式,包括:API、指南、教程、Q/A、示例代码及其他。 许多开发者都用过苹果文档
  • VB.NET 创建WORD文档

    千次阅读 2011-01-02 13:46:00
    1、添加引用->COM->Microsoft Word 11.0 Object Library... ''' 创建word文档 ''' ''' Public Sub CreateDoc() Dim docApp As New Word.Application Dim doc As Word.Document Dim miss As Object = Sys
  • 用VC++文档界面中创建多视图

    千次阅读 2005-11-17 18:30:00
    一个单文档界面中存在多个视图,并且可以根据需要进行视图的动态切换,这是当前比较流行的界面风格,它可以满足许多用户操作和显示方面的需要。这种界面风格的主要代表软件是Outlook Express。而用VC++实现这种...
  • 某些应用程序需要创建新(空)文档,而不需要强迫用户选择file->new菜单命令,例如:当用户应用程序的窗口中执行某个特定的命令时将创建一个文档;或者执行另外的菜单命令时,间接的创建文档,下面的技术解释了如何...
  • 如何Web页面上直接打开、编辑、创建Office文档 有朋友询问如何Web页面上做到像SharePoint中的效果一样,能直接激活客户端的Word来打开.doc文件,而不是类似直接点击.doc文档链接时WordIE中被打开那样。想想这...
  • 利用Java 创建和读取Excel文档(POI方法)为了保证示例程序的运行,必须安装Java 2 sdk1.4.0 和Jakarta POI,Jakarta POI的Web站点是: http://jakarta.apache.org/poi/ 示例1将演示如何利用Jakarta POI API 创建Excel ...
  • Docute 创建文档网站(docute v3)

    千次阅读 2020-04-25 18:38:03
    文章目录Docute 3 创建文档网站1 Docute 介绍2 快速开始2.1 手动创建文件2.2 自动创建文件3 自定义定制3.1 配置文件3.2 首页3.3 Landing 页面3.4 侧边栏3.4.1 目录表3.5 导航栏3.5.1 图标3.5.2 下拉菜单3.6 代码高亮...
  • (实验文档)javaweb 创建web项目步骤
  • 利用Dom4j创建xml文档

    千次阅读 2013-05-22 15:35:49
    DocumentHelper是使用Dom4j的辅助类的集合,利用它我们可以创建xml文档,接下来我们就使用它来创建一个简单的xml文档。 // //创建文档 第一种方式 // Document document=DocumentHelper.createDocument(); // /...
  • 目的 这篇教程将教会你使用 CorelDRAW VBA代码来创建和打开文档,演示 Document 对象的使用方法创建文档 Application 对象有两个...Application.CreateDocument 方法基于默认的页面大小、方向和样式创建了...
  • 如何Web页面上直接打开、编辑、创建Office文档 有朋友询问如何Web页面上做到像SharePoint中的效果一样,能直接激活客户端的Word来打开.doc文件,而不是类似直接点击.doc文档链接时WordIE中被打开那样。...
  • docx库,可以用来创建docx文档,包含段落、分页符、表格、图片、标题、样式等几乎所有的word文档中能常用的功能都包含了,这个包的主要功能便是用来创建文档,相对来说用来修改功能不是很强大。 首先检查一下我们的...
  • macOS 版 PS 2020,新建文档窗口频闪,无法成功创建文档,网上很多小伙伴建议使用旧版,但是新版更好用啊???? 方法1,继续使用新版窗口 1. 打开Adobe Creative Cloud,登录自己账号,登录成功后关闭即可。 2. 再...
  • 文档模板和文档/视图的创建过程

    千次阅读 2005-06-09 17:28:00
    为管理创建文档及其关联的视图和框架窗口的复杂过程,框架使用两个文档模板类:用于 SDI 应用程序的 CSingleDocTemplate 和用于 MDI 应用程序的 CMultiDocTemplate。CSingleDocTemplate 一次只能创建和存储一种类型...
  • 如何MFC单文档创建多视图 基本步骤如下: 1.首先创建一个MFC单文档应用程序。 2.添加4个MFC类TopLView、BottomLView、TopRView、BottomRView,基类为CView。 3.添加一个MFC类CControlForm,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 790,652
精华内容 316,260
关键字:

如何在文档创建新样式