分类
C#

用C#给word添加页眉页脚

#region 给word文档添加页眉页脚
/// <summary>
/// 给word文档添加页眉
/// </summary>
/// <param name=”filePath”>文件名</param>
/// <returns></returns>
public static bool AddPageHeaderFooter(string filePath)
{
     try
     {
         Object oMissing = System.Reflection.Missing.Value;
         Microsoft.Office.Interop.Word._Application WordApp = new Application();
         WordApp.Visible = true;
         object filename = filePath;
         Microsoft.Office.Interop.Word._Document WordDoc = WordApp.Documents.Open(ref filename, ref oMissing,
             ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
             ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
 
         ////添加页眉方法一:
         //WordApp.ActiveWindow.View.Type = WdViewType.wdOutlineView;
         //WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekPrimaryHeader;
         //WordApp.ActiveWindow.ActivePane.Selection.InsertAfter( “**公司” );//页眉内容
 
         ////添加页眉方法二:
         if (WordApp.ActiveWindow.ActivePane.View.Type == WdViewType.wdNormalView ||
             WordApp.ActiveWindow.ActivePane.View.Type == WdViewType.wdOutlineView)
         {
             WordApp.ActiveWindow.ActivePane.View.Type = WdViewType.wdPrintView;
         }
         WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekCurrentPageHeader;
         WordApp.Selection.HeaderFooter.LinkToPrevious = false;
         WordApp.Selection.HeaderFooter.Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
         WordApp.Selection.HeaderFooter.Range.Text = “页眉内容”;
 
         WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekCurrentPageFooter;
         WordApp.Selection.HeaderFooter.LinkToPrevious = false;
         WordApp.Selection.HeaderFooter.Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
         WordApp.ActiveWindow.ActivePane.Selection.InsertAfter(“页脚内容”);
 
         //跳出页眉页脚设置
         WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekMainDocument;
 
         //保存
         WordDoc.Save();
         WordDoc.Close(ref oMissing, ref oMissing, ref oMissing);
         WordApp.Quit(ref oMissing, ref oMissing, ref oMissing);
         return true;
     }
     catch (Exception e)
     {
         Console.WriteLine(e.Message);
         Console.WriteLine(e.StackTrace);
         return false;
     }
}
#endregion 给word文档添加页眉页脚

本文转载自:https://blog.csdn.net/lu930124/article/details/48782191

分类
C#

用C# 创建word文档

使用代码创建word文档:

#region 新建Word文档
/// <summary>
/// 动态生成Word文档并填充内容
/// </summary>
/// <param name=”dir”>文档目录</param>
/// <param name=”fileName”>文档名</param>
/// <returns>返回自定义信息</returns>
public static bool CreateWordFile(string dir, string fileName)
{
     try
     {
         Object oMissing = System.Reflection.Missing.Value;
 
         if (!Directory.Exists(dir))
         {
             //创建文件所在目录
             Directory.CreateDirectory(dir);
         }
         //创建Word文档(Microsoft.Office.Interop.Word)
         Microsoft.Office.Interop.Word._Application WordApp = new Application();
         WordApp.Visible = true;
         Microsoft.Office.Interop.Word._Document WordDoc = WordApp.Documents.Add(
             ref oMissing, ref oMissing, ref oMissing, ref oMissing);
 
         //保存
         object filename = dir + fileName;
         WordDoc.SaveAs(ref filename, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
             ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
             ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
         WordDoc.Close(ref oMissing, ref oMissing, ref oMissing);
         WordApp.Quit(ref oMissing, ref oMissing, ref oMissing);
         return true;
     }
     catch (Exception e)
     {
         Console.WriteLine(e.Message);
         Console.WriteLine(e.StackTrace);
         return false;
     }
}
#endregion 新建Word文档

本文转载自:https://blog.csdn.net/lu930124/article/details/48782191

分类
Word VSTO

[VSTO]C#获取Word文档页数,并跳转到指定的页面获取页面信息

C#获取Word文档页数,并跳转到指定的页面获取页面信息

using MSWord = Microsoft.Office.Interop.Word;

private MSWord.Application wordApp;  //Word应用程序变量
private MSWord.Document wordDoc;     //Word文档变量
private Object Nothing = Missing.Value;
   //初始化
wordApp = new MSWord.ApplicationClass();
wordDoc = wordApp.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing);
// 打开Word
object FileName = strPath;
object readOnly = false;
object isVisible = true;
wordDoc = wordApp.Documents.Open(ref FileName, ref Nothing, ref readOnly,
ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing,
ref Nothing, ref Nothing, ref Nothing, ref isVisible, ref Nothing,
ref Nothing, ref Nothing, ref Nothing);

// 计算Word文档页数
MSWord.WdStatistic stat = MSWord.WdStatistic.wdStatisticPages;
int num = wordDoc.ComputeStatistics(stat, ref  Nothing);

// 跳转到指定书签
object BookMarkName = “BookMark1”;
object what = MSWord.WdGoToItem.wdGoToBookmark;
wordDoc.ActiveWindow.Selection.GoTo(ref what, ref Nothing, ref Nothing, ref BookMarkName);
MessageBox.Show( wordDoc.ActiveWindow.Selection.Paragraphs[1].Range.Text.ToString());

//  跳转到指定页

object What = MSWord.WdGoToItem.wdGoToPage;
object Which = MSWord.WdGoToDirection.wdGoToNext;
object Name = “1”; // 页数
wordDoc.ActiveWindow.Selection.GoTo(ref What, ref Which, ref Nothing, ref Name); // 第二个参数可以用Nothing
wordDoc.ActiveWindow.Selection.Paragraphs[1].Range.Text.ToString();

//  以下是跳转到某个页面之后的操作

// 通过PageSetup可以获取某个页面的信息

// 获取页面的分栏
wordDoc.ActiveWindow.Selection.PageSetup.TextColumn;

分类
excel

excel填充当前列不规则的空格

现在有些这么些空格需要填充:

01

A列“第二卷”下来会有“第三卷”到“第N卷”,B列“矿物药”下面还会有N个分类,C列也一样。填充的要求是,比如C列,“纳化合物类”到“钾化合物类”之间的空格,填充“纳化合类”,抽象出来,就是上面的内容填充,直到下一个值的出现。

以前都是用手工弄的,碰到上万行的数据,得弄半天。现在研究了一下,发现可以用这种方法完成,以C列为例:

第一步,选择“纳化合物类”下的第一个空格,直到列尾。

第二步,查找空格。“查找和选择”->“定位条件”->“空值”

02

03

第四步:查找出来之后,C4=C3

04

第五步:ctrl+enter,完成自动填充

第六步:复制自动完成的列,只黏贴数值。这一步非常重要,只有这样才固定产生的值,要不其中某个单元格修改,会有好些单元格跟着变了。

分类
mysql

phpmyadmin不用输用户密码直接进入

本地处理数据挺多的,管理mysql数据库用的是phpmyadmin。

之前用xampp,可以直接点击phpmyadmin首页进入数据库管理的后台,不用输入用户名和密码,这样很省事。但是,自从换了WampServer后,每次都得输入用户root,密码为空,而且过不了一会又退出来,烦不胜烦。这次下决心要搞定这个事情。

网上搜了一下,有人说是修改libraries\config.default.php文件,但是,这个文件开头就写了N遍的DO NOT EDIT,说明修改这个文件不是明智之举。再看有一行字:DO NOT EDIT THIS FILE, EDIT config.inc.php INSTEAD !!!那就改config.inc.php吧。

相关代码如下:

/* Authentication type */

//$cfg[‘Servers’][$i][‘auth_type’] = ‘cookie’;//原来的配置

$cfg[‘Servers’][$i][‘auth_type’] = ‘config’;//修改后的配置,需要修改的地方

/* Server parameters */

$cfg[‘Servers’][$i][‘host’] = ‘localhost’;

$cfg[‘Servers’][$i][‘compress’] = false;

$cfg[‘Servers’][$i][‘AllowNoPassword’] = true;

$cfg[‘Servers’][$i][‘user’] = ‘root’; // MySQL user 访问phpmyadmin使用的mysql用户名

$cfg[‘Servers’][$i][‘password’] = ”; // MySQL password (only needed对应上述mysql用户名的密码

修改的地方有两个,一个是auth_type,改为config,一个是user、password,改为自己的用户名密码。修改好之后,就可以实现点击phpmyadmin的首页直接进入后台,不用输入用户名和密码了。

对了,config.inc.php就是phpmyadmin的根目录下。

分类
indesign

indesign查找替换GREP脚本实现

因为要做几百本电子书,格式设置就成为大麻烦。重复劳动,肯定是要用indesign的脚本来实现,要不太累,而且容易出错。

于是研究了下官方的手册,写了以下javascript代码,完美实现目的:

var myDocument = app.documents.item(0);

//清除GREP的设置

app.findGrepPreferences = NothingEnum.nothing;

app.changeGrepPreferences = NothingEnum.nothing;

//设置搜索参数

app.findChangeGrepOptions.includeFootnotes = false;

app.findChangeGrepOptions.includeHiddenLayers = false;

app.findChangeGrepOptions.includeLockedLayersForFind = false;

app.findChangeGrepOptions.includeLockedStoriesForFind = false;

app.findChangeGrepOptions.includeMasterPages = false;

//查找的正则表达式

app.findGrepPreferences.findWhat = “(\@.*\@)”;

//app.changeGrepPreferences.changeTo = “\1”;

//app.changeTextPreferences.changeTo = “1111”;

//Apply the change to 24-point text only.

//app.findGrepPreferences.pointSize = 24;

//app.changeGrepPreferences.underline = true;

//替换的正则表达式

myParagraphStyle = myDocument.paragraphStyles.item(“一级标题”);

app.changeGrepPreferences.appliedParagraphStyle=myParagraphStyle;

myDocument.changeGrep();

//查找完成后清除GREP设置

app.findGrepPreferences = NothingEnum.nothing;

app.changeGrepPreferences = NothingEnum.nothing;

//查找二级标题的正则表达式

app.findGrepPreferences.findWhat = “(#.*#)”;

//替换的正则表达式

myParagraphStyle = myDocument.paragraphStyles.item(“二级标题”);

app.changeGrepPreferences.appliedParagraphStyle=myParagraphStyle;

myDocument.changeGrep();

//查找完成后清除GREP设置

app.findGrepPreferences = NothingEnum.nothing;

app.changeGrepPreferences = NothingEnum.nothing;

var myDocument = app.activeDocument;

//清除查找替换的设置

app.findTextPreferences = NothingEnum.nothing;

app.changeTextPreferences = NothingEnum.nothing;

//Set the find options.

app.findChangeTextOptions.caseSensitive = false;

app.findChangeTextOptions.includeFootnotes = false;

app.findChangeTextOptions.includeHiddenLayers = false;

app.findChangeTextOptions.includeLockedLayersForFind = false;

app.findChangeTextOptions.includeLockedStoriesForFind = false;

app.findChangeTextOptions.includeMasterPages = false;

app.findChangeTextOptions.wholeWord = false;

//查找,替换

app.findTextPreferences.findWhat = “@”;

app.changeTextPreferences.changeTo = “”;

myDocument.changeText();

//清除查找替换的设置

app.findTextPreferences = NothingEnum.nothing;

app.changeTextPreferences = NothingEnum.nothing;

//查找,替换

app.findTextPreferences.findWhat = “#”;

app.changeTextPreferences.changeTo = “”;

myDocument.changeText();

//清除查找替换的设置

app.findTextPreferences = NothingEnum.nothing;

app.changeTextPreferences = NothingEnum.nothing;

这个代码,用VB来写也是差不多的。感觉用哪种代码来写都差不多,语言的关键词不一样。

分类
mysql

阿里云mysql,总是过一段时间停止服务

阿里云mysql,总是过一段时间停止服务,需要要手动启动。搜索了一下,估计是以前设置的时候把连接数设置太高,导致占用内存太多,然后进程被centos杀死。

修改配置为:

max_connections = 100

听说如果是innodb的话,最好修改以下参数:

innodb_buffer_pool_size=64M

分类
visual studio

运行所选代码生成器时出错

visual studio 2019错误提示:运行所选代码生成器时出错:
未能生成项目,请修复版本错误,然后重试。

解决方法:

1、在创建控制器(视图)之前,一定要先运行一遍项目,再生成

2、缺少相关的框架,得先安装,比如entity framework

分类
mysql

MySql错误:Field ‘typeid’ doesn’t have a default value

刚才,往数据库里导入数据时,MySql出现了错误:Field ‘typeid’ doesn’t have a default value。

这种错误,今年以来,我已经忍受很久了。以前的话,就手动修改一下字段的默认值为null,解决问题。但是,对于有二三十个字段的表来讲,这样改有点要人命!

可是,同一个数据库,字段什么都是一样的,为什么以前不会出现这种错误呢?肯定是某个设置有问题。

搜索了一下,有人认为是MySql的配置问题,估计是。

打开my.ini,没找到和网上说的一样的配置。但是找到了以下这段配置:sql-mode=”STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER”

从字段意思来理解,应该是这个配置在起作用: STRICT_ALL_TABLES,删除。重启MySql。再导入,不再出错了。

看来今年新安装的wampserver升级之后就成这样了。

分类
未分类

为什么开这么一个博客?

为什么开这么一个博客?

本人并不是一个职业的程序员,因为想提升一下工作效率,自学了编程写代码。到目前为止,依然是个蹩脚的码工。

编程语言接触了不少,最早写css,后来接触到php、javascript,毕竟悲剧的是,javascript到现在也没学会。PHP也只会增删改查,复杂一点的功能根本不会。复杂一点的函数也根本不会。说起来也可笑,到现也没搞明白增删改查那种函数是怎么写的,每次增删改查都是按最原始的代码来写的。本来也想学精通一点,但实在没有精力,而且PHP的使用场景也只限于web,像操控office或处理电脑上的文件,PHP应该是没这功能。

于是我决定再学习一门编程语言,帮助我提高办工效率。

开始是学powershell,挺简单的——其实还是和学PHP一样的情况,写个函数是不会的,只会些扁平的操作,比如复制黏贴。

于是决定学VBA。研究之后,感觉VBA已经快要被淘汰了。转学VB.NET,又一研究发现,还有个孪生的C#。

VB.NET在国内没有多少人用,用C#的倒不少。尽管如此,.NET编程在国内目前非常的冷门,感觉没什么氛围。像我这种小白,想搜一些现成的代码来使用,经常搜不到,或是重复的。
net core都快到3.0了,网上搜一下怎么安装连接mysql的,居然没有一个很完整的、适合小白学习的教程。

总之呢,对于编程我是半桶水,只懂点皮毛。经常需要搜索资料来解决问题,有些经过自己验证的,就放到这里来,方便再次使用。

本博客不开评论,只给自己看。