精华内容
下载资源
问答
  • 这是一个计算Word中文档行数的例程(表格中的行数不算)。 Sub test() Dim i As Integer Dim t As Table i = ActiveDocument.range.ComputeStatistics(wdStatisticLines) For Each t In ActiveDocument...

    这是一个计算Word中文档行数的例程(表格中的行数不算)。

     

    Sub test()
         Dim i As Integer
         Dim t As Table
         
        i = ActiveDocument.range.ComputeStatistics(wdStatisticLines)
         For Each t In ActiveDocument.Tables
             i = i - t.range.ComputeStatistics(wdStatisticLines)
         Next
         MsgBox i
     End Sub




    欢迎访问我的主博客《许阳的红泥屋

    转载于:https://www.cnblogs.com/mksword/archive/2012/07/02/3934059.html

    展开全文
  • JS--VBA--打印word统计

    2011-06-13 17:31:23
    * 打印 按人员统计 报表 */ function printCountForMember(){ var rowsFlag = 10.0; //每页输入的行数 // 得到输入到表格的JSON unit是用aJax请求后得到的JSONObject, root为此jo的key。unit.root得到...

    /**
     * 打印 按人员统计 报表
     */
    function printCountForMember(){
    
    	var rowsFlag = 10.0; //每页输入的行数
    	
    	// 得到输入到表格的JSON  unit是用aJax请求后得到的JSONObject, root为此jo的key。unit.root得到jo的value值。
    	// unit.root为一个JSONArray。
    	var tableJson = unit.root; 
    	var fileCount = Math.ceil(tableJson.length/rowsFlag); // 根据每页输出的行数,计算文档的数量
    	
    	// 对应所封装的JSON对象的key值。
    	var filedsArray_1 = ["name", "unit", "times", "经贸", "考察", "高访", "科技", "文体", "民航", "培训", "留学" ,"维军", "友好访问"];
    	var filedsArray_2 = ["name", "unit", "times", "工程项目", "馆工", "巡检","突发","验收","谈判","省外","随任","探亲","会议","常驻"];
    	
    	for(var i=0; i<fileCount; i++){
    		var word1 = this.printWordForCountByMember(unit,i,rowsFlag,'countByMember1',filedsArray_1,4);
    		this.closeWord(word1);
    		
    		var word2 = this.printWordForCountByMember(unit,i,rowsFlag,'countByMember2',filedsArray_2,4);
    		this.closeWord(word2);
    	}
    }
    
    //结束word进程
    function closeWord(wordApplication){
    	wordApplication.Quit(0);
    }
    
    /**
     *  得到 文件模板的目录
     * @param {} fileName
     * @return {}
     */
    function getFileTemplatePath(fileName){
    	
    	var contextPath = document.getElementById("contextPath").value;
    	
    	var path = contextPath + "/page/printTemplate/count/" + fileName + ".dot";
    	
    	var url="http://"+window.location.hostname + ":" + window.location.port + path;
    	
    	return url;
    }
    
    /**
     *  调出word模板,并为标签赋值
     * @param {} jsonObj json对象
     * @param {} fileFlag 文档标识,标识现在是第几个文档
     * @param {} rowsFlag 表格输出行数的标识,当前文档表格所要输出的行数。
     * @param {} fileName 所要打开的word文件名
     * @param {} countFlag 从表格的第几列开始统计,其中,出国次数为第3列
     */
    function printWordForCountByMember(jsonObj,fileFlag,rowsFlag,fileName,filedsArray,countFlag){
    	
    	try{
    	   var word=new ActiveXObject("Word.Application");
    	}catch(e){
    		Ext.Msg.alert("出错了","浏览器安全级别较高导致不能创建Word对象或者客户端没有安装Word软件'!");   
    	}
    
        var url= this.getFileTemplatePath(fileName);
    	
    	word.Documents.add(url);
    	
    	//得到word模板中所设置的“书签”名称,为其赋值
    	range=word.ActiveDocument.Bookmarks('countType').Range.Text = jsonObj.count_type;
    	range=word.ActiveDocument.Bookmarks('printYear').Range.Text = jsonObj.printYear;
    	range=word.ActiveDocument.Bookmarks('printMonth').Range.Text = jsonObj.printMonth;
    	range=word.ActiveDocument.Bookmarks('printDay').Range.Text = jsonObj.printDay;
    
    	
    	var myTable = word.ActiveDocument.Tables(1); //取得活动文档的第一个表格
    	
    	var rowsCount = myTable.Rows.Count; //计算表格的行数
    	
    	var list = unit.root; // 得到JSONArray
    	
    	var listSize = list.length; // 计算JSONArray的长度
    	
    	var countSum = new Array(); //创建一个新的数组,用来存放每一页的“总计”信息。
    	for(var c=0; c<=filedsArray.length-countFlag+1; c++){ // c 为此表格的所要统计显示的列数。
    		countSum[c] = 0;   // 为初始数组赋值为0
    	}
    	
    	var iRows = 2; // 根据表格的不同,来定义此值。 iRow 为表格数据开始写入的行数  2即为从当前表格的第2行开始写入数据
    	var r; // 每一行的JSON
    	var flag=1; // 标识,初值为1,记录当前已写入多少行数据
    	// i的初始值为当前的序号(打印第一页,传入0)乘以 所要写入的行数。  结束值为此JSONArray的长度。
    	for(var i=fileFlag*rowsFlag; i<listSize; i++){
    		r = list[i];
    		
    		if(flag > rowsFlag){  // 如入当前已写入行数 大于 所要求的行数,则跳出循环,打印当前页。
    			break;
    		}
    
    		if(iRows > rowsCount){ // 如果模板所定义的行数小于记录数,则取此表格的第2行(即去掉表头后的行数)增加到此表格的后面。
    			myTable.Rows.Add(myTable.cell(2,2));
    		}
    		
    		var values = new Array(filedsArray.length);
    		for(var f=0; f<values.length; f++){
    			values[f] = r[filedsArray[f]];
    //			alert( filedsArray[f] + ":" + values[f]);
    		}
    		
    		// 每循环一次,为此表格写入一行数据。
    		setRangeText(myTable,iRows,2,values,countSum,countFlag);
    		
    		iRows ++;
    		flag ++;
    	}
    	
    	setCountSum(myTable,rowsCount,countFlag+1,countSum);  // 设置最后一行 ”总计“ 的值。
    	
    //	word.Visible=true;  // 设置word是否可见。
    	word.PrintOut();  // 设置word打印程序。 和word.Visible分开使用。即word文档无预览页面,直接输出到打印机。 打印完成回需要 结束 winword 进程。
    	
    	return word;
    	
    }
    
    /**
     * 为表格赋值
     * @param {} myTable 当前table的对象
     * @param {} rStart 从第几行开始写数据
     * @param {} cStart 从第几列
     * @param {} values 数据的数组
     * @param {} countSum 第一列的 总计
     */
    function setRangeText(myTable,rStart,cStart,values,countSum,countFlag){
    	var count = 0;
    	for(var i=0; i<values.length; i++){
    		myTable.cell(rStart,i+cStart).Range.Text = values[i];  // 特殊遍例,为每一行赋值。
    		
    		if(i>countFlag-2){
    			countSum[i-countFlag+1] = countSum[i-countFlag+1] + values[i]; 	// 根据表格的不同更改 这里是循环到第2列时,开始计算求和。
    			count = count + values[i];  // 每特殊一行,从第二列开始统计每一行的结果,即每一行的"合计“。将其赋值给count。
    		}
    	}
    	
    	countSum[countSum.length-1] = countSum[countSum.length-1] + count;  // 为统计数组的最后一列赋值,将”合计“赋值为最后一列。
    	myTable.cell(rStart,values.length + cStart).Range.Text = count;  // 为每一行的最后一列”合计“写入数据。
    	
    }
    
    /**
     * 为最后一行 总计 写数据
     * @param {} myTable
     * @param {} rStart
     * @param {} cStart
     * @param {} countSum 
     */
    function setCountSum(myTable,rStart,cStart,countSum){
    	for(var i=0; i<countSum.length; i++){
    		myTable.cell(rStart,i+cStart).Range.Text = countSum[i];
    	}
    }	
    附件中为word模板。
    展开全文
  • 将AutoCAD数据按表格格式输出为文本文件,也可将Word文件,文本文件读入AutoCAD,并制成表格 3.对Excel表格进行灵活排版,表格过长自动分片,设置表头,提供9种对齐方式,并能设置单元格高度及宽度, 表格行数...
  • Word中制作表格时都希望在表格的第一列增加一个序号,其作用可以标识行或统计行数。例如从1开始,一直到80、100甚至更多。那么怎么添加呢?采用手工进行编辑还是其他的?手工编辑显然是一件不可能的事,不仅费时...

    在Word中制作表格时都希望在表格的第一列增加一个序号,其作用可以标识行或统计行数。例如从1开始,一直到80、100甚至更多。那么怎么添加呢?采用手工进行编辑还是其他的?手工编辑显然是一件不可能的事,不仅费时费力而且极容易出错,特别是在增加一行或删除一行时,非常麻烦,容易漏号、重号,如何有一个快捷给表格增加序号的方法就好了,下面以给通讯录的第一列添加序号为例详细介绍下word中表格增加递增序号的方法。另外还整理了一些常见的添加序号问题,感兴趣的朋友可以了解下:

    问:在word2007中如何在表格的一列里增加顺序递增的编号,当增加内容时序号自动更新?

    答:选中要编号的列,点击开始-段落-编号(可选样式),然后增加减少都会自动排号了

    问:word里面有表格,如何在表格前面在增加一列用于写序号?

    答:

    增加一列:纵向选择原来的第一列,然后单击右键→插入列。

    自动序号:选中第一列→word的格式菜单→自动序号和符号→选择序号,选择一种样式。即可。

    如果有表头,可把表头的第一个格 选中,单击字号这一列上面的,自动序号按钮,则取消这一个的自动编号,下面的自动从1开始重新编号。

    或者:

    选中要填序号的单元格,执行:格式/项目符号和编号,选择合适的编号方式就OK了!!

    选中要填序号的单元格,执行:格式/项目符号和编号,选择合适的编号方式就OK了。

    具体步骤

    1、先看一下要添加序号的表格。

    2、编辑编号样式。调出菜单【格式—项目符号和编号】,在选项卡中选择编号,随便点击一种样式,点击“自定义”按钮,按下图填信息,填好后点击确定。

    3、选择编号样式。选中下图选择的样式,点击确定。

    4、自动序号已经加好。如下图。

    5、下面我们需要把序号左对齐显示,选中序号列。

    6、编辑段落样式。选择菜单【格式—段落】,点击“制表位”按钮(红线框)。

    7、在弹出的窗口中,先点击“全部清除”,然后在默认制表位中输入“0”,如下图所示。点击确定。

    8、实现左对齐。

    9、如果想序号居中对齐,只要选择序号,点击工具栏中的居中即可。

    注意事项

    第7步一定要填正确,否则最后不能实现居中对齐。如果要实现不从1开始编号,请修改第2步图中的“起始编号”。

    以上就是今天给大家分享的关于如何给word表格中添加编号的操作方法,有需要的小伙伴们可以根据以上步骤进行操作,如果需要pdf转换成html可以使用w大师。

    展开全文
  • 一.程序名: TrueTable9.7(真实表格)-单机A版 二.... 1.在AutoCAD与Excel间动态交互数据,...具有统计功能,对统计结果提供三种排序方式,并制成统计表格 6.具有批处理功能,可同时读取多个文本文件或Excel文件
  • cad常用插件

    2014-04-25 18:00:21
    功能: 1.在AutoCAD与Excel间动态交互数据,具有动态关联Excel,实时更新的功能,并能静态输出...具有统计功能,对统计结果提供三种排序方式,并制成统计表格 6.具有批处理功能,可同时读取多个文本文件或Excel文件
  • 1. 统计文本文件的字符数、单词数和行数 2. 递归处理目录下符合条件的文件 3. 返回更复杂的数据(代码行/空行/注释行) 4. 实现GUI界面 二、项目计划PSP表格 PSP2.1 Personal Software Process Stages ...

    github链接 :https://github.com/YYFCY/Word-Count

    一、项目要求

    1. 统计文本文件的字符数、单词数和行数

    2. 递归处理目录下符合条件的文件

    3. 返回更复杂的数据(代码行/空行/注释行)

    4. 实现GUI界面

    二、项目计划PSP表格

    PSP2.1 Personal Software Process Stages 预估耗时    (分钟) 实际耗时    (分钟)
    Planning 计划    
    Estimate 估计这个任务需要多少时间 30  
    Development 开发    
    Analysis 需求分析(包括学习新技术) 200  
    Design Spec 生成设计文档 100  
    Design Review 设计复审(和同事审核设计文档) 100  
    Coding Standard 代码规范(为目前的开发制定合适的规范) 30  
    Design 具体设计 100  
    Coding 具体编码 1000  
    Code Review 代码复审 100  
    Test 测试(自我测试、修改代码、提交修改) 100  
    Reporting 报告    
    Test Report 测试报告 150  
    Size Measurement 计算工作量 30  
    Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 60  
      合计 2000  

    三、解题思路

    参数 功能
    -c 返回文件file.c的字符数
    -w 返回文件file.c的词的数目
    -l 返回文件file.c的行数
    -s 递归处理目录下符合条件的文件
    -a 返回更复杂的数据
    -x 打开GUI界面

    下面对参数读取部分做详细解释:

    根据输入的参数检查文件是否可以存在并可以读取,返回-1表示文件不存在,返回-2表示文件存在但是没有读取权限,返回1表示文件可以正常读取。

    //检查文件是否存在且可以读取
    int check_file_name(char file_name[])
    {
    	if (access(file_name, 0))//判断该文件/文件夹是否存在;
    		return -1;
    	if (access(file_name, 2) != 0)//判断该文件/文件夹是否有读权限;
    		return -2;
    	return 1;
    }

    在确定文件可以读取之后,还需要对输入参数的前半部分做一检测,判断其是否符合题目要求,返回为1则表明符合要求,返回为-1表明输入参数错误

    //检查命令是否正确,命令正确返回1,错误返回-1.
    int check_command(char command[])
    {
    	int len = strlen(command);
    	if (len != 2 || command[0] != '-')
    		return -1;
    	if (command[1] == 'c' || command[1] == 'w' || command[1] == 'l' || command[1] == 'a') 
    		return 1;
    	else 
    		return -1;
    }

     

    四、设计实现

    总体设计(程序流程图)

     

    五、各功能模块

    1.  统计文件字符数 count_char()函数

    //统计文件的字符数
    int count_char(char file[])
    {
    	int char_num = 0;
    	char ch;
    	freopen(file, "r", stdin);//重定向输入
    	while ((ch = getchar()) != EOF)
    	{
    		//if (ch != ' '&&ch != '\n'&&ch != '\t')
    		char_num++;
    	}
    	fclose(stdin);
    	return char_num;
    }

     

    2.统计文件单词数 count_word()

    //统计文件的单词数
    int count_word(char file[])
    {
    	int word_num = 0, flag = 0;
    	char ch;
    	freopen(file, "r", stdin);
    	while ((ch = getchar()) != EOF)
    	{
    		if ((ch >= 'a'&&ch <= 'z') || (ch >= 'A'&&ch <= 'Z') || ch == '_') flag = 1;
    		else
    		{
    			if (flag)
    			{
    				word_num++;
    				flag = 0;
    			}
    		}
    	}
    	fclose(stdin);
    	return word_num;
    }

     

    3. 统计文件的行数 count_line()

    //统计文件的行数
    int count_line(char file[])
    {
    	int line_num = 0;
    	char ch;
    	freopen(file, "r", stdin);
    	while ((ch = getchar()) != EOF)
    	{
    		if (ch == '\n')
    		{
    			line_num++;
    		}
    	}
    	fclose(stdin);
    	return line_num;
    }

     4. 统计文件的空行数count_blank_line()

    //统计文件的空行数
    int count_blank_line(char file[])
    {
    	int blank_line_num = 0, ch_num = 0;
    	char ch;
    	freopen(file, "r", stdin);
    	while ((ch = getchar()) != EOF)
    	{
    		if (ch == '\n')
    		{
    			if (ch_num <= 1)
    			{
    				blank_line_num++;	
    			}
    			ch_num = 0;
    		}
    		else if (ch != ' '&&ch != '\t')
    			ch_num++;
    	}
    	fclose(stdin);
    	return blank_line_num;
    }

     

    5. 统计文件的注释的行数count_comment_line()

    该部分算法比较简单,只是在编写程序时需要注意一些细节方法,可以使程序显得简单明了

    例如本小组用flag1是注释开头的标志位,current_line记录当前行是单行注释,flag2是多行注释开头的标志,line记录多行注释的行数,flag3是多行注释结尾的标志

    //统计文件的注释的行数
    int count_comment_line(char file[])
    {
    	//flag1是注释开头的标志位,current_line记录当前行是单行注释,flag2是多行注释开头的标志,line记录多行注释的行数,flag3是多行注释结尾的标志
    	int comment_line_num = 0, ch_num=0, flag1 = 0, flag2 = 0, flag3 = 0, line = 0, current_line = 0;
    	char ch;
    	freopen(file, "r", stdin);
    	while ((ch = getchar()) != EOF)
    	{
    		if (ch == '\n')
    		{
    			if (line&&ch_num > 0)//若line>0且字符数大于0表示当前行是多行注释中的一行
    			{
    				line++;
    			}
    			ch_num = flag1 = current_line = 0;
    		}
    		if (current_line == 1) continue;//当前行是单行注释,直接跳过对字符的判断直到读到换行符
    		if (ch != ' '&&ch != '\n'&&ch != '\t') 
    			ch_num++;
    		if (flag2)//当前读到多行注释
    		{
    			if (ch != ' '&&ch != '\n'&&ch != '\t')
    				ch_num++;
    			if (ch == '*')//读到多行注释的结尾'*/'的符号'*'
    				flag3 = 1;
    			else if (ch == '/'&&flag3)//读到多行注释结尾的'/',必须连续读'*'和'/',否则flag3置0
    			{
    				comment_line_num += line;
    				line = 0;
    				flag2 = flag3 = 0;
    				current_line = 1;
    			}
    			else
    				flag3 = 0;
    		}
    		else if (ch == '/')
    		{
    			if (flag1 == 0)
    				flag1 = 1;
    			else if (flag1 = 1 && ch_num <= 3)//单行注释必须连续读取两个'/',且当前行在注释之前最多只有一个可显示字符
    			{
    				comment_line_num++;
    				current_line = 1;
    			}
    		}
    		else if (ch == '*')//多行注释的开头'/*'
    		{
    			if (flag1 == 1)
    			{
    				flag2 = 1;
    				line = 1;//进入多行注释
    			}
    		}
    		else
    			flag1 = 0;
    	}
    	fclose(stdin);
    	return comment_line_num;
    }

    6. wchar_t转换为string

    编写该部分函数主要是为了使之后的输出和数据之间的传递更为方便

    //wchar_t 转换 string 
    void Wchar_tToString(std::string& szDst, wchar_t *wchar)
    {
    	wchar_t * wText = wchar;
    	DWORD dwNum = WideCharToMultiByte(CP_OEMCP, NULL, wText, -1, NULL, 0, NULL, FALSE);// WideCharToMultiByte的运用
    	char *psText;// psText为char*的临时数组,作为赋值给std::string的中间变量
    	psText = new char[dwNum];
    	WideCharToMultiByte(CP_OEMCP, NULL, wText, -1, psText, dwNum, NULL, FALSE);// WideCharToMultiByte的再次运用
    	szDst = psText;// std::string赋值
    	delete[]psText;// psText的清除
    }

    该部分代码参考博客:https://blog.csdn.net/chinahaerbin/article/details/7764483

    7. 递归处理文件模块 search_file()

    //递归处理文件模块
    void search_file(string path, int idx)
    {
    	struct _finddata_t filefind;
    	string cur = path + "*.*";
    	int done = 0, handle;
    	if ((handle = _findfirst(cur.c_str(), &filefind)) != -1)
    	{
    		while (!(done = _findnext(handle, &filefind)))
    		{
    			if (strcmp(filefind.name, "..") == 0)
    				continue;
    			if ((_A_SUBDIR == filefind.attrib)) 
    			{  //是目录
    				cur = path + filefind.name + '\\';
    				search_file(cur, idx);    //递归处理
    			}
    			else //不是目录,是文件
    			{
    				int len = strlen(filefind.name);
    				for (int i = 0; i < len; i++) 
    				{
    					if (filefind.name[i] == '.') 
    					{
    						len = i;
    						break;
    					}
    				}
    				if (strcmp(filefind.name + len, para[idx] + 1) == 0) 
    				{
    					cur = path + filefind.name;
    					printf("%s:\n", filefind.name);
    					for (int i = 1; i < idx; i++)
    						basic_command(para[i], &cur[0]);
    				}
    			}
    		}
    		_findclose(handle);
    	}
    }

    遇到的问题:

    一开始编写该部分的函数时有点无从下手,之后会参考了某博主的写的博客,才有了较为清晰的思路。

    传送门:https://fushengfei.iteye.com/blog/1100241

    8.GUI界面

     

     

    核心代码如下:

            //设置进程的重定向输出
            public void ProcessOutDataReceived(object sender, DataReceivedEventArgs e)
            {
                if (this.Output.InvokeRequired)
                {
                    this.Output.Invoke(new Action(() =>
                    {
                        this.Output.AppendText(e.Data + "\r\n");
                    }));
                }
                else
                {
                    this.Output.AppendText(e.Data + "\r\n");
                }
            }
            //C#启动EXE文件
            public bool StartProcess(string filename, string[] args)
            {
                try
                {
                    string s = "";
                    foreach (string arg in args)
                    {
                        s = s + arg + " ";
                    }
                    s = s.Trim();
                    Process myprocess = new Process();
                    myprocess.OutputDataReceived -= new DataReceivedEventHandler(ProcessOutDataReceived);
                    ProcessStartInfo startInfo = new ProcessStartInfo(filename, s);
                    startInfo.FileName = "WordCount.exe";
                    startInfo.UseShellExecute = false;
                    startInfo.WindowStyle = ProcessWindowStyle.Hidden;
                    startInfo.CreateNoWindow = true;
                    startInfo.RedirectStandardError = true;
                    startInfo.RedirectStandardInput = true;//重定向输入
                    startInfo.RedirectStandardOutput = true;//重定向输出
                    myprocess.StartInfo = startInfo;
                    myprocess.StartInfo.UseShellExecute = false;
                    myprocess.Start();
                    myprocess.BeginOutputReadLine();
                    myprocess.OutputDataReceived += new DataReceivedEventHandler(ProcessOutDataReceived);
                    return true;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("启动应用程序时出错!原因:" + ex.Message);
                }
                return false;
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                OpenFileDialog openFileDialog1 = new OpenFileDialog();   //显示选择文件对话框 
                openFileDialog1.InitialDirectory = "c:\\";
                openFileDialog1.Filter = "All files (*.*)|*.*";
                openFileDialog1.FilterIndex = 2;
                openFileDialog1.RestoreDirectory = true;
    
                if (openFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    this.FilePath.Text = openFileDialog1.FileName;     //显示文件路径 
                }
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                if (string.IsNullOrEmpty(this.FilePath.Text.Trim()))
                {
                    MessageBox.Show("请选择文件");
                }
                string[] arg = new string[10];
                arg[0] = "-c"; arg[1] = "-w"; arg[2] = "-l"; arg[3] = "-a";
                arg[4] = this.FilePath.Text.Trim();
                StartProcess(@"WordCount.exe", arg);
            }

    遇到的问题:

    这一部分的进程重定向输出参考了博客:https://www.cnblogs.com/hsiang/p/6596276.html

    启动exe文件参考了博客:http://www.cnblogs.com/HappyEDay/p/5498884.html

    9. 主函数

    int main(int argc, char* argv[])
    {
    	if (strcmp(argv[1], "-s") == 0) // 递归处理目录下符合条件的文件  
    	{		
    		TCHAR szPath[MAX_PATH] = { 0 };
    		if (GetModuleFileName(NULL, szPath, MAX_PATH))//通过函数GetModuleFileName获取执行程序的绝对路径。
    		{
    			(_tcsrchr(szPath, _T('\\')))[1] = 0;//这里需要用到_tcsrchr函数来将获取到的执行程序的绝对路径中的执行程序的名称去掉
    		}
    		string Path;
    		Wchar_tToString(Path, szPath);
    		for (int i = 0; i < argc; i++)
    			strcpy(para[i], argv[i]);
    		search_file(Path, argc - 1);
    	}
    	else if (strcmp(argv[1], "-x") == 0) //图形界面 
    	{	
    		ShellExecuteA(NULL, "open", "GUI.exe", NULL, NULL, SW_SHOW);
    	}
    	else //对单个.c文件的统计 
    	{									
    		int num_para;
    		for (num_para = argc - 1; num_para > 1; num_para--) 
    		{
    			if (strcmp(argv[num_para], "-s") == 0 || strcmp(argv[num_para], "-x") == 0
    				|| strcmp(argv[num_para], "-c") == 0 || strcmp(argv[num_para], "-w") == 0
    				|| strcmp(argv[num_para], "-l") == 0 || strcmp(argv[num_para], "-a") == 0)
    			{
    				break;
    			}
    		}
    		char  filename[500] = { 0 };
    		strcat(filename, argv[num_para + 1]);
    		for (int i = num_para + 2; i < argc; i++) 
    		{
    			strcat(filename, " ");
    			strcat(filename, argv[i]);
    		}
    		int flag_3 = check_file_name(filename);
    		if (flag_3 == -1) 
    		{
    			printf("Error:The file does not exist !\n");
    			return 0;
    		}
    		else if (flag_3 == -2) 
    		{
    			printf("Error:The file has no read permissions !\n");
    			return 0;
    		}
    		printf("%s:\n", filename);
    		for (int i = 1; i <= num_para; i++) 
    		{
    			if (check_command(argv[i]) == 1)
    				basic_command(argv[i], filename);
    			else
    				printf("Command parameter error !\n");
    		}
    	}
    	return 0;
    }

     

    六、PSP表格总结

    PSP2.1 Personal Software Process Stages 预估耗时    (分钟) 实际耗时    (分钟)
    Planning 计划    
    Estimate 估计这个任务需要多少时间 30 50
    Development 开发    
    Analysis 需求分析(包括学习新技术) 200 200
    Design Spec 生成设计文档 100 120
    Design Review 设计复审(和同事审核设计文档) 100 80
    Coding Standard 代码规范(为目前的开发制定合适的规范) 30 30
    Design 具体设计 100 150
    Coding 具体编码 1000 1500
    Code Review 代码复审 100 200
    Test 测试(自我测试、修改代码、提交修改) 100 100
    Reporting 报告    
    Test Report 测试报告 150 150
    Size Measurement 计算工作量 30 50
    Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 60 60
      合计 2000 2690

     

    七、总结与反思

           这次项目设计与编码部分主要由我来完成,测试与博客撰写主要由我的队友完成。总的来说,编码部分的完成较为顺利,难点在于递归处理文件以及界面的设计部分。经过这次项目,个人编程能力得到了提升,也让我学会了如何与他人合作开发项目。

    展开全文
  • TrueTable10.0A破解版

    2009-09-17 14:08:23
    具有统计功能,对统计结果提供三种排序方式,并制成统计表格 6.具有批处理功能,可同时读取多个文本文件或Excel文件 三.安装: 安装TrueTable10.0前,先将TrueTable以前的版本反安装,再执行install.exe进行...
  • 系统登录、操作员权限设置、连接加密的Access数据库(方法一)、将硬盘文件目录转为数据库数据、将数据库文件转换为文本文件、将Access导出成多种数据格式、将数据库文件转成HTML并设置超级链接、利用Word统计字数和...
  • 查询显示器可以进行数据分页显示,既可固定表格行数分页,也可根据窗口大小自动分页。 查询显示器中当CTRL或SHIFT键按下时,点击列标题可以按多个列综合排序。 查询显示器的工具栏上可以增加自定义按钮,并有对应...
  • 尹成Python27天入门到项目实战

    千人学习 2020-12-05 17:04:22
    多进程多线程综合实战读取CSV写入csv单线程统计行数多线程统计行数多进程统计行数多线程检索数据第一步多线程检索赵琳多线程检索找到通知其他人退出多线程检索开放数据并保存同一个文件作业day24up ...
  • 3.6 textarea自适应文字行数 3.7 禁止文本框的拷贝和粘贴 3.8 控制两个文本框只输其一 3.9 判断编辑器中是否包含特殊字符 3.10 判断文本中回车的数量 3.11 判断字符串中有多少汉字 3.12 去除字符串的前后空格 3.13 ...
  • 8、在Word表格的单元格内单击鼠标左钮即可选定单元格。 9、在Word表格中,一个表格单元可以拆分成多个单元格。 10、在Word中保存一个新文档时,会出现另存为对话框。 三、上机操作题 1、输入下列文字并以TEST1.DOC名...
  • 实例093 获取多维数组的行数与列数 110 实例094 按指定条件在数组中检索元素 111 实例095 在数组中添加一个元素 112 实例096 在数组中添加一个数组 113 实例097 不改变长度删除数组中的元素 115 实例098 删除数组...
  • 3.6 textarea自适应文字行数 3.7 禁止文本框的拷贝和粘贴 3.8 控制两个文本框只输其一 3.9 判断编辑器中是否包含特殊字符 3.10 判断文本中回车的数量 3.11 判断字符串中有多少汉字 3.12 去除字符串的前后空格 3.13 ...
  • Excel新增工具集

    2011-12-20 09:30:27
    1、Word转Excel:把若干个Word文档中的表合并到Excel工作簿中的一个工作表中,可用于对下属填写的报名表(登记表)的汇总统计。 2、Excel转Word:把Excel工作簿的某个工作表中记录逐一拆分到对应的若干个Word文档中...
  • 按数据行数和你设置的页数自动平均分配每页的行数,再根据页的高度自动调整行距,再不用调整行距。 6、轻松实现多纵列打印(若仅打印学号、姓名两列数据,一个班80个学生,打印成4纵列,在Excel里需要把21—80号的...
  •  实例093 获取多维数组的行数与列数 110  实例094 按指定条件在数组中检索元素 111  实例095 在数组中添加一个元素 112  实例096 在数组中添加一个数组 113  实例097 不改变长度删除数组中的元素 115  ...
  • 实例093 获取多维数组的行数与列数 实例094 按指定条件在数组中检索元素 实例095 在数组中添加一个元素 实例096 在数组中添加一个数组 实例097 不改变长度删除数组中的元素 实例098 删除数组元素后改变其长度 ...
  • 实例093 获取多维数组的行数与列数 实例094 按指定条件在数组中检索元素 实例095 在数组中添加一个元素 实例096 在数组中添加一个数组 实例097 不改变长度删除数组中的元素 实例098 删除数组元素后改变其长度 ...
  • 实例093 获取多维数组的行数与列数 实例094 按指定条件在数组中检索元素 实例095 在数组中添加一个元素 实例096 在数组中添加一个数组 实例097 不改变长度删除数组中的元素 实例098 删除数组元素后改变其长度 ...
  • 书名:《Visual Basic开发实战1200例(第II卷)》(清华大学出版社.孙秀梅.巩建华) PDF格式扫描版,全书分为7...实例221 将数据库数据传给Word 391 实例222 将SQL Server数据库中的表插入 Access数据库 392 实例223 SQL...
  • 书名:《Visual Basic开发实战1200例(第II卷)》(清华大学出版社.孙秀梅.巩建华) PDF格式扫描版,全书分为7...实例221 将数据库数据传给Word 391 实例222 将SQL Server数据库中的表插入 Access数据库 392 实例223 SQL...
  • 会计理论考试题

    2012-03-07 21:04:40
    C、UNIX、AutoCAD、PoewPoint D、Word、Lotus 1-2-3、AutoCAD 17.编译软件属于 ___C___ 。 A、数据库管理系统 B、工具软件 C、系统软件 D、应用软件 18.计算机病毒最大的危害是__D____。 A、计算机病毒具有传染性 B...
  • 人力资源管理软件(完全免费)

    热门讨论 2011-03-08 11:36:20
    本人力资源软件包含可以输出到excel、wps表格、html等文件 本人力资源软件包含提供虚拟域名互联网浏览器访问 支持中控、依时利、舒特、文本接口等多种考勤机 绿色软件,安全方便 单机永远免费,升级免费 人力...
  • 实例071 在tlistview控件中对数据排序或统计 86 实例072 在tlistview组件中绘制底纹 88 实例073 在列表视图中拖动视图项 89 2.6 ttreeview控件应用典型实例 90 实例074 将数据库数据显示到树视图中 90...
  • 实例071 在tlistview控件中对数据排序或统计 86 实例072 在tlistview组件中绘制底纹 88 实例073 在列表视图中拖动视图项 89 2.6 ttreeview控件应用典型实例 90 实例074 将数据库数据显示到树视图中 90...
  • excel的使用

    2012-11-25 17:06:01
    2、单元格内容的合并根据需要,有时想把B列与C列的内容进行合并,如果行数较少,可以直接用“剪切”和“粘贴”来完成操作,但如果有几万行,就不能这样办了。解决办法是:在C行后插入一个空列(如果D列没有内容,就...
  • delphi 开发经验技巧宝典源码

    热门讨论 2010-08-12 16:47:23
    0235 如何读取Word中的文本 156 0236 通过身份证号获取年龄 157 0237 如何实现一个应用程序只能打开一个进程 158 7.4 其他数据处理技术 159 0238 对计算结果四舍五入 159 0239 获取一个字符的ASCII值 ...

空空如也

空空如也

1 2
收藏数 38
精华内容 15
关键字:

word表格统计行数