Sprie for .net8.0填报项目验收材料
其实这从技术层面没什么好讲的,会开发的都会弄。只是我觉得这样的工作交给一个不懂开发项目经理来做,那这项目经理只有哭!
项目情况是一个大型国企的项目验收。大家都知道甲方都是不做选择,一句话:“我全都要!”。于是这个项目就有了几百个doc,docx,pdf,xmind,xlsx等等,有这么多文件都没什么好说的。
我在填最后的验收材料清单(docx文件)的时候看到一张表,真的让我觉得非常的无语。
序号 | 资料分类 | 资料编号 | 资料名称 | 页数 | 是否原件 |
---|---|---|---|---|---|
1 | 分类 | XXX01 | XXXX | 100 | 是 |
发现没有这表格要填文件的页数,如果就几个文件也就算了。由于软考高项‘信息系统项目管理师’这个考试是没有技术门槛的,所以很多非本专业的人都考了这个证,几百个文件对于一个不懂技术的项目经理那我只能恭喜他喜提加班了。
下面讲下这活我怎么干的
- 先用everything把文件列表获取到。
- 粘贴到vscode中保存到一个txt里面。
- 用vs起了一个vb.net(你也可以用c#,我不喜欢c#所以就用vb)控制台项目,nuget引入sprie.doc,sprie.pdf,我需要统计这两种文件的页数。
- 输出到控制台复制到vscode里面,正则格式成我需要的列,选择粘贴到word里面。
整个过程其实没什么技术含量,只遇到一个小问题,就是spire的基础许可处理docx文件时,文件的段落不能大于500。我没去找破解,果断编辑了超过500个段落的文件。
代码丢这里有需要的可以直接用
Imports System.IO
Imports Spire.Doc
Imports Spire.PdfModule ProgramSub Main()'替换为你的文本文件路径Dim fileListPath As String = "D:\Code\getPages\list.txt" ProcessFilesFromList(fileListPath)Console.ReadLine()End Sub' 从文件列表中读取路径并处理文件 Private Sub ProcessFilesFromList(fileListPath As String)If Not File.Exists(fileListPath) ThenConsole.WriteLine("File list not found: " & fileListPath)ReturnEnd IfDim lines As String() = File.ReadAllLines(fileListPath)For Each line In linesDim filePath As String = line.Trim()If String.IsNullOrWhiteSpace(filePath) ThenContinue ForEnd IfIf Not File.Exists(filePath) ThenConsole.WriteLine("File not found: " & filePath)Continue ForEnd IfDim fileExtension As String = Path.GetExtension(filePath).ToLower()Select Case fileExtensionCase ".doc", ".docx"ProcessWordFile(filePath)Case ".pdf"ProcessPdfFile(filePath)Case ElseConsole.WriteLine("File: " & filePath & " is not supported.")End SelectNextEnd Sub' 处理Word文件并打印页数 Private Sub ProcessWordFile(filePath As String)Dim document As New Document()document.LoadFromFile(filePath)Dim pageCount As Integer = document.PageCountConsole.WriteLine("File: " & filePath & ", Total pages: " & pageCount)document.Close()End Sub' 处理PDF文件并打印页数 Private Sub ProcessPdfFile(filePath As String)Dim pdfPageCount As Integer = GetPdfPageCount(filePath)Console.WriteLine("File: " & filePath & ", Total pages: " & pdfPageCount & "\n")End Sub'获取PDF文件的页数 Private Function GetPdfPageCount(filePath As String) As IntegerDim pdf As New PdfDocument()pdf.LoadFromFile(filePath)Return pdf.Pages.CountEnd Function
End Module