OnlyOffice使用指南(编辑Excel文件)
1.基于docker启动服务,详细步骤
https://blog.csdn.net/qq_44163117/article/details/133761652
启动之后可以看到
2.设置网格不可编辑
onlyoffice设置部分无法编辑 答:1.把Excel表里的所有单元格,都变成未锁定(Ctrl+1 ——> 单元格属性——>锁定的勾去掉) 2.把你希望不让别人编辑的单元格,变成:锁定 3.审阅——>保护工作表 ——>把选定:锁定单元格的勾去掉 成功。
3.下载网站示例源码
https://www.onlyoffice.com/download-docs.aspx?from=default#docs-community
选择
4.修改项目路径
settings.config里面修改 自己的地址
4.设定 手动点击保存会触发回调
在DocEditor.aspx.cs里面,下图位置改为true
5.操作时的状态
每次操作onlyoffice都会有一个状态,比如手动保存会触发MustForceSave状态
DocEditor.aspx里面声明了回传的地址CallBackUrl
回传的请求会传送到WebEditor.ashx.cs里面处理
ProcessRequest会根据传入的类型调用方法
手动保存的时候会触发Track方法
代码:
var my = fileData; var downloadUri = (string)fileData["url"]; //从返回的路径读取文件里面的内容 SaveToOrcl(downloadUri,context);
保存到数据库
private static void SaveToOrcl(string url,HttpContext context) { int cell1 = 0; int cell2 = 0; double cell3 = 0; double cell4 = 0; string cell5 = ""; //读取值 var bytes=GetBytes(url); using (MemoryStream stream = new MemoryStream(bytes)) { ExcelPackage.LicenseContext = LicenseContext.NonCommercial; using (ExcelPackage package = new ExcelPackage(stream)) { ExcelWorksheet worksheet = package.Workbook.Worksheets[0]; // 假设你要读取第一个工作表 // EPPlus的行和列索引都是从1开始的 cell1 = int.Parse(worksheet.Cells[2, 6].Value.ToString()); cell2 = int.Parse(worksheet.Cells[5, 6].Value.ToString()); cell3 = Math.Round(double.Parse(worksheet.Cells[6, 6].Value.ToString()),1); cell4 = Math.Round(double.Parse(worksheet.Cells[7, 6].Value.ToString()), 1); cell5 = worksheet.Cells[4, 7].Value.ToString(); } } string connStr = "Data Source=127.0.0.1:1521/orcl; User Id=adu; Password=123456;"; //保存到数据库 OracleConnectionClass conn = new OracleConnectionClass(connStr); var table=conn.ExecuteQuery("select * from TableData where TrackLength=" + cell1); //插入数据库 string sql = ""; if (table.Rows.Count > 0) { sql = $"update TableData set TrackLength={cell1},StealCount={cell2},MinSpan={cell3},PlatLength={cell4} where Id='{table.Rows[0]["Id"]}'"; } else { sql = $"insert into TableData(Id,TrackLength,StealCount,MinSpan,PlatLength) values (sys_guid(),{cell1},{cell2},{cell3},{cell4})"; } conn.ExecuteNonQuery(sql); //保存到word SaveToDocker(context,cell5); }
保存文件到docker,在Default.aspx.cs
//上传word到docker服务器 public static string DoUpload(string content,string fileName, HttpContext context) { var curExt = (Path.GetExtension(fileName) ?? "").ToLower(); if (!FileExts.Contains(curExt)) // check if the file extension is supported by the editor { throw new Exception("File type is not supported"); } fileName = GetCorrectName(fileName); // get the correct file name if such a name already exists //保留本地IIS var savedFileName = StoragePath(fileName, null); // get the storage path to the uploading file // 创建一个新的 Word 文档 XWPFDocument document = new XWPFDocument(); // 添加一个段落 XWPFParagraph paragraph = document.CreateParagraph(); XWPFRun run = paragraph.CreateRun(); run.SetText(content); // 保存文档到本地 using (FileStream stream = new FileStream(savedFileName, FileMode.Create, FileAccess.Write)) { document.Write(stream); } // get file meta information or create the default one var id = context.Request.Cookies.GetOrDefault("uid", null); var user = Users.getUser(id); // get the user DocEditor.CreateMeta(fileName, user.id, user.name, null); return fileName; }
记录编程的点滴,体会学习的乐趣