mirror of
http://git.xinwangdao.com/cnnc-embedded-parts-detect/detect.git
synced 2025-06-24 13:34:13 +08:00
fixed
This commit is contained in:
parent
2749a840ec
commit
f95d182632
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
detect.gui/Embedded/dist/assets/drawer-673c9879.css
vendored
Normal file
1
detect.gui/Embedded/dist/assets/drawer-673c9879.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
detect.gui/Embedded/dist/assets/drawer-96468f61.js
vendored
Normal file
1
detect.gui/Embedded/dist/assets/drawer-96468f61.js
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
12
detect.gui/Embedded/dist/assets/index-5ebe62a2.js
vendored
Normal file
12
detect.gui/Embedded/dist/assets/index-5ebe62a2.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
detect.gui/Embedded/dist/assets/index-fd628dce.css
vendored
Normal file
1
detect.gui/Embedded/dist/assets/index-fd628dce.css
vendored
Normal file
File diff suppressed because one or more lines are too long
6
detect.gui/Embedded/dist/assets/index.js
vendored
6
detect.gui/Embedded/dist/assets/index.js
vendored
File diff suppressed because one or more lines are too long
1
detect.gui/Embedded/dist/assets/modal-18310470.js
vendored
Normal file
1
detect.gui/Embedded/dist/assets/modal-18310470.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
var B=Object.defineProperty;var c=Object.getOwnPropertySymbols;var h=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var _=(o,l,e)=>l in o?B(o,l,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[l]=e,u=(o,l)=>{for(var e in l||(l={}))h.call(l,e)&&_(o,e,l[e]);if(c)for(var e of c(l))b.call(l,e)&&_(o,e,l[e]);return o};var P=(o,l)=>{var e={};for(var s in o)h.call(o,s)&&l.indexOf(s)<0&&(e[s]=o[s]);if(o!=null&&c)for(var s of c(o))l.indexOf(s)<0&&b.call(o,s)&&(e[s]=o[s]);return e};var f=(o,l,e)=>new Promise((s,p)=>{var i=r=>{try{n(e.next(r))}catch(m){p(m)}},d=r=>{try{n(e.throw(r))}catch(m){p(m)}},n=r=>r.done?s(r.value):Promise.resolve(r.value).then(i,d);n((e=e.apply(o,l)).next())});import{a as x,B as F}from"./index-8a6826ba.js";import{u as M,B as k}from"./useForm-baba730a.js";import{d as R,f as v,c as W,u as t,Z as H,a4 as L,a5 as X,k as Y,a9 as O}from"./vue-72a104e4.js";import{_ as S}from"./index.js";import"./antd-0679333d.js";import"./useWindowSizeFn-1db11f4f.js";import"./copyTextToClipboard-3ca69a78.js";const U=R({__name:"modal",emits:["success","register"],setup(o,{emit:l}){const e=v(),s=v(!0),p=l,i=W(()=>t(s)?"编辑":"新增"),[d,{closeModal:n,setModalProps:r}]=x(a=>f(this,null,function*(){yield C(),r({confirmLoading:!1}),s.value=!!(a!=null&&a.isUpdate),e.value=a==null?void 0:a.record,yield I(u({},a.record))})),m=[{colProps:{span:24},field:"sn",label:"序号",componentProps:{allowClear:!1,placeholder:"序号"},component:"Input",defaultValue:void 0,rules:[{required:!0,message:"请输入序号!"}]},{colProps:{span:24},field:"code",label:"预埋件编号",componentProps:{allowClear:!1,placeholder:"预埋件编号"},component:"Input",defaultValue:void 0,rules:[{required:!0,message:"请输入预埋件编号!"}]},{colProps:{span:24},field:"type",label:"类型",componentProps:{allowClear:!1,placeholder:"类型"},component:"Input",defaultValue:void 0,rules:[{required:!0,message:"请输入类型!"}]},{colProps:{span:24},field:"x",label:"X(mm)",componentProps:{allowClear:!1,placeholder:"X(mm)"},component:"Input",defaultValue:void 0,rules:[{required:!0,message:"请输入X(mm)!"}]},{colProps:{span:24},field:"y",label:"Y(mm)",componentProps:{allowClear:!1,placeholder:"Y(mm)"},component:"Input",defaultValue:void 0,rules:[{required:!0,message:"请输入Y(mm)!"}]},{colProps:{span:24},field:"w",label:"W(mm)",componentProps:{allowClear:!1,placeholder:"W(mm)"},component:"Input",defaultValue:void 0,rules:[{required:!0,message:"请输入W(mm)!"}]},{colProps:{span:24},field:"h",label:"H(mm)",componentProps:{allowClear:!1,placeholder:"H(mm)"},component:"Input",defaultValue:void 0,rules:[{required:!0,message:"请输入H(mm)!"}]},{colProps:{span:24},field:"center",label:"Center(m)",componentProps:{allowClear:!1,placeholder:"Center(m)"},component:"Input",defaultValue:void 0,rules:[{required:!0,message:"请输入Center(m)!"}]}],[w,{resetFields:C,setFieldsValue:I,validate:V}]=M({labelWidth:90,schemas:m,showActionButtonGroup:!1});function y(){return f(this,null,function*(){try{const a=yield V();r({confirmLoading:!0});const g=P(a,[]);n();const q=Object.assign({},u(u({},t(e)),g));p("success",q)}catch(a){}finally{r({confirmLoading:!1})}})}return(a,g)=>(H(),L(t(F),O(a.$attrs,{onRegister:t(d),closable:!1,showFooter:"",title:i.value,width:"400px",onOk:y}),{default:X(()=>[Y(t(k),{onRegister:t(w)},null,8,["onRegister"])]),_:1},16,["onRegister","title"]))}});const D=S(U,[["__scopeId","data-v-934beb3b"]]);export{D as default};
|
1
detect.gui/Embedded/dist/assets/modal-324f2c7b.css
vendored
Normal file
1
detect.gui/Embedded/dist/assets/modal-324f2c7b.css
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
var B=Object.defineProperty;var p=Object.getOwnPropertySymbols;var h=Object.prototype.hasOwnProperty,P=Object.prototype.propertyIsEnumerable;var g=(o,l,e)=>l in o?B(o,l,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[l]=e,i=(o,l)=>{for(var e in l||(l={}))h.call(l,e)&&g(o,e,l[e]);if(p)for(var e of p(l))P.call(l,e)&&g(o,e,l[e]);return o};var v=(o,l)=>{var e={};for(var s in o)h.call(o,s)&&l.indexOf(s)<0&&(e[s]=o[s]);if(o!=null&&p)for(var s of p(o))l.indexOf(s)<0&&P.call(o,s)&&(e[s]=o[s]);return e};var f=(o,l,e)=>new Promise((s,m)=>{var u=r=>{try{n(e.next(r))}catch(c){m(c)}},d=r=>{try{n(e.throw(r))}catch(c){m(c)}},n=r=>r.done?s(r.value):Promise.resolve(r.value).then(u,d);n((e=e.apply(o,l)).next())});import{a as x,B as F}from"./index-8a6826ba.js";import{u as M,B as k}from"./useForm-baba730a.js";import{d as R,f as w,c as W,u as t,Z as H,a4 as L,a5 as X,k as Y,a9 as O}from"./vue-72a104e4.js";import{_ as S}from"./index.js";import"./antd-0679333d.js";import"./useWindowSizeFn-1db11f4f.js";import"./copyTextToClipboard-3ca69a78.js";const U=R({__name:"modal",emits:["success","register"],setup(o,{emit:l}){const e=w(),s=w(!0),m=l,u=W(()=>t(s)?"编辑":"新增"),[d,{closeModal:n,setModalProps:r}]=x(a=>f(this,null,function*(){yield b(),r({confirmLoading:!1}),s.value=!!(a!=null&&a.isUpdate),e.value=a==null?void 0:a.record,yield y(i({},a.record))})),c=[{colProps:{span:24},field:"code",label:"预埋件编号",componentProps:{allowClear:!1,placeholder:"预埋件编号"},component:"Input",defaultValue:void 0,rules:[{required:!0,message:"请输入预埋件编号!"}]},{colProps:{span:24},field:"type",label:"类型",componentProps:{allowClear:!1,placeholder:"类型"},component:"Input",defaultValue:void 0,rules:[{required:!0,message:"请输入类型!"}]},{colProps:{span:24},field:"x",label:"X(mm)",componentProps:{allowClear:!1,placeholder:"X(mm)"},component:"Input",defaultValue:void 0,rules:[{required:!0,message:"请输入X(mm)!"}]},{colProps:{span:24},field:"y",label:"Y(mm)",componentProps:{allowClear:!1,placeholder:"Y(mm)"},component:"Input",defaultValue:void 0,rules:[{required:!0,message:"请输入Y(mm)!"}]},{colProps:{span:24},field:"w",label:"W(mm)",componentProps:{allowClear:!1,placeholder:"W(mm)"},component:"Input",defaultValue:void 0,rules:[{required:!0,message:"请输入W(mm)!"}]},{colProps:{span:24},field:"h",label:"H(mm)",componentProps:{allowClear:!1,placeholder:"H(mm)"},component:"Input",defaultValue:void 0,rules:[{required:!0,message:"请输入H(mm)!"}]},{colProps:{span:24},field:"center",label:"Center(m)",componentProps:{allowClear:!1,placeholder:"Center(m)"},component:"Input",defaultValue:void 0,rules:[{required:!0,message:"请输入Center(m)!"}]}],[C,{resetFields:b,setFieldsValue:y,validate:I}]=M({labelWidth:90,schemas:c,showActionButtonGroup:!1});function V(){return f(this,null,function*(){try{const a=yield I();r({confirmLoading:!0});const _=v(a,[]);n();const q=Object.assign({},i(i({},t(e)),_));m("success",q)}catch(a){}finally{r({confirmLoading:!1})}})}return(a,_)=>(H(),L(t(F),O(a.$attrs,{onRegister:t(d),closable:!1,showFooter:"",title:u.value,width:"400px",onOk:V}),{default:X(()=>[Y(t(k),{onRegister:t(C)},null,8,["onRegister"])]),_:1},16,["onRegister","title"]))}});const D=S(U,[["__scopeId","data-v-c3887645"]]);export{D as default};
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
detect.gui/Embedded/dist/assets/result-4a566f93.css
vendored
Normal file
1
detect.gui/Embedded/dist/assets/result-4a566f93.css
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -9,9 +9,7 @@ using System.Text.RegularExpressions;
|
||||
using System.Text.Unicode;
|
||||
using System.Threading.Tasks;
|
||||
using detect.gui.Models;
|
||||
using detect.gui.VWMS;
|
||||
using PaddleOCRSharp;
|
||||
using Splat;
|
||||
|
||||
namespace detect.gui.Services;
|
||||
|
||||
@ -86,13 +84,16 @@ public class OCRService
|
||||
return new ApiResponse<string?>(0, "success", result);
|
||||
}
|
||||
|
||||
public Task<string> ImportByOCR(string base64ImageString, string? wallCode)
|
||||
public Task<string> ImportByOCR(string base64ImageString)
|
||||
{
|
||||
return Task.Run(() =>
|
||||
{
|
||||
var fileName = DateTime.Now.ToString("yyyyMMddHHmmss");
|
||||
fileName = GetImage(base64ImageString, fileName);
|
||||
var result = _engine?.DetectText(new Bitmap(fileName));
|
||||
// var fileName = DateTime.Now.ToString("yyyyMMddHHmmss");
|
||||
// fileName = GetImage(base64ImageString, fileName);
|
||||
// var result = _engine?.DetectText(new Bitmap(fileName));
|
||||
var image = GetImage(base64ImageString);
|
||||
if (image is null) return "";
|
||||
var result = _engine?.DetectText(image);
|
||||
if (result == null) return "";
|
||||
var resultList = JsonHelper.DeserializeObject<List<OCRResultEntity>>(result.JsonText);
|
||||
resultList = resultList.Select((d, index) =>
|
||||
@ -100,29 +101,49 @@ public class OCRService
|
||||
d.Index = index;
|
||||
return d;
|
||||
}).ToList();
|
||||
var items = resultList.Where(d => !string.IsNullOrEmpty(d.Text) && d.Text.ToUpper().Contains("定位信息表")).ToList();
|
||||
if (items.Any() && !string.IsNullOrEmpty(items.First().Text))
|
||||
{
|
||||
wallCode = items.First().Text!.Replace("定位信息表", "").Replace("预埋件", "").Replace("墙", "");
|
||||
}
|
||||
// var tempList = resultList.Where(d => !string.IsNullOrEmpty(d.Text) &&
|
||||
// (d.Text.ToUpper().Contains("PT") ||
|
||||
// d.Text.ToUpper().Contains("VBP") ||
|
||||
// d.Text.ToUpper().Contains("BSC")))
|
||||
// .ToList();
|
||||
var tempList = new List<OCRResultEntity>();
|
||||
if (wallCode != null)
|
||||
{
|
||||
tempList = resultList.Where(d => !string.IsNullOrEmpty(d.Text) && d.Text.ToUpper().Contains(wallCode.ToUpper())).ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
tempList = resultList.Where(d => !string.IsNullOrEmpty(d.Text) &&
|
||||
(d.Text.ToUpper().Contains("P") ||
|
||||
// var items = resultList.Where(d => !string.IsNullOrEmpty(d.Text) && d.Text.ToUpper().Contains("定位信息表")).ToList();
|
||||
// if (items.Any() && !string.IsNullOrEmpty(items.First().Text))
|
||||
// {
|
||||
// wallCode = items.First().Text!.Replace("定位信息表", "").Replace("预埋件", "").Replace("墙", "");
|
||||
// }
|
||||
// var tempList = new List<OCRResultEntity>();
|
||||
// if (!string.IsNullOrWhiteSpace(wallCode))
|
||||
// {
|
||||
// tempList = resultList.Where(d => !string.IsNullOrEmpty(d.Text) && d.Text.ToUpper().Contains(wallCode.ToUpper())).ToList();
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
var tempList = resultList.Where(d => !string.IsNullOrEmpty(d.Text) &&
|
||||
(d.Text.ToUpper().Contains("PA") ||
|
||||
d.Text.ToUpper().Contains("PB") ||
|
||||
d.Text.ToUpper().Contains("PC") ||
|
||||
d.Text.ToUpper().Contains("PD") ||
|
||||
d.Text.ToUpper().Contains("PE") ||
|
||||
d.Text.ToUpper().Contains("PF") ||
|
||||
d.Text.ToUpper().Contains("PG") ||
|
||||
d.Text.ToUpper().Contains("PH") ||
|
||||
d.Text.ToUpper().Contains("PI") ||
|
||||
d.Text.ToUpper().Contains("PJ") ||
|
||||
d.Text.ToUpper().Contains("PK") ||
|
||||
d.Text.ToUpper().Contains("PL") ||
|
||||
d.Text.ToUpper().Contains("PM") ||
|
||||
d.Text.ToUpper().Contains("PN") ||
|
||||
d.Text.ToUpper().Contains("PO") ||
|
||||
d.Text.ToUpper().Contains("PP") ||
|
||||
d.Text.ToUpper().Contains("PO") ||
|
||||
d.Text.ToUpper().Contains("PR") ||
|
||||
d.Text.ToUpper().Contains("PS") ||
|
||||
d.Text.ToUpper().Contains("PT") ||
|
||||
d.Text.ToUpper().Contains("PU") ||
|
||||
d.Text.ToUpper().Contains("PV") ||
|
||||
d.Text.ToUpper().Contains("PW") ||
|
||||
d.Text.ToUpper().Contains("PX") ||
|
||||
d.Text.ToUpper().Contains("PY") ||
|
||||
d.Text.ToUpper().Contains("PZ") ||
|
||||
d.Text.ToUpper().Contains("VB") ||
|
||||
d.Text.ToUpper().Contains("BS")))
|
||||
.ToList();
|
||||
}
|
||||
// }
|
||||
var data = new List<dynamic>();
|
||||
foreach (var item in tempList)
|
||||
{
|
||||
@ -149,8 +170,14 @@ public class OCRService
|
||||
h = type;
|
||||
}
|
||||
}
|
||||
else if (type.Contains('x', StringComparison.CurrentCultureIgnoreCase))
|
||||
{
|
||||
w = type.Split("x")[0];
|
||||
h = type.Split("x")[1];
|
||||
}
|
||||
else
|
||||
continue;
|
||||
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
@ -159,6 +186,7 @@ public class OCRService
|
||||
// }
|
||||
data.Add(new
|
||||
{
|
||||
sn = ReplaceChars(resultList[item.Index - 1].Text),
|
||||
code = ReplaceChars(resultList[item.Index].Text),
|
||||
type = ReplaceChars(resultList[item.Index + 1].Text),
|
||||
x = ReplaceChars(resultList[item.Index + 2].Text),
|
||||
@ -173,17 +201,18 @@ public class OCRService
|
||||
}
|
||||
catch
|
||||
{
|
||||
data.Add(new
|
||||
{
|
||||
code = "",
|
||||
type = "",
|
||||
x = "0",
|
||||
y = "0",
|
||||
center = "0",
|
||||
w = "0",
|
||||
h = "0",
|
||||
angle = "0",
|
||||
});
|
||||
// data.Add(new
|
||||
// {
|
||||
// sn = "",
|
||||
// code = "",
|
||||
// type = "",
|
||||
// x = "0",
|
||||
// y = "0",
|
||||
// center = "0",
|
||||
// w = "0",
|
||||
// h = "0",
|
||||
// angle = "0",
|
||||
// });
|
||||
}
|
||||
}
|
||||
|
||||
@ -200,33 +229,33 @@ public class OCRService
|
||||
return string.IsNullOrEmpty(text) ? "" : text.Replace("\u00d7", "x").Replace("_", "").Replace(",", "").Replace(":", "").Replace(";", "").Replace(" ", "").Replace(",", "");
|
||||
}
|
||||
|
||||
private string GetImage(string base64ImageString, string fileName)
|
||||
private Image? GetImage(string base64ImageString)
|
||||
{
|
||||
var imageType = System.Drawing.Imaging.ImageFormat.Gif;
|
||||
if (base64ImageString.IndexOf("data:image/jpeg", StringComparison.Ordinal) >= 0)
|
||||
{
|
||||
imageType = System.Drawing.Imaging.ImageFormat.Jpeg;
|
||||
base64ImageString = base64ImageString.Replace("data:image/jpeg;base64,", "");
|
||||
fileName += ".jpg";
|
||||
// fileName += ".jpg";
|
||||
}
|
||||
|
||||
if (base64ImageString.IndexOf("data:image/png", StringComparison.Ordinal) >= 0)
|
||||
{
|
||||
imageType = System.Drawing.Imaging.ImageFormat.Png;
|
||||
base64ImageString = base64ImageString.Replace("data:image/png;base64,", "");
|
||||
fileName += ".png";
|
||||
// fileName += ".png";
|
||||
}
|
||||
|
||||
if (base64ImageString.IndexOf("data:image/bmp", StringComparison.Ordinal) >= 0)
|
||||
{
|
||||
imageType = System.Drawing.Imaging.ImageFormat.Bmp;
|
||||
base64ImageString = base64ImageString.Replace("data:image/bmp;base64,", "");
|
||||
fileName += ".bmp";
|
||||
// fileName += ".bmp";
|
||||
}
|
||||
|
||||
if (Equals(imageType, System.Drawing.Imaging.ImageFormat.Gif))
|
||||
{
|
||||
return "";
|
||||
return null;
|
||||
}
|
||||
|
||||
try
|
||||
@ -234,19 +263,18 @@ public class OCRService
|
||||
var imageBytes = Convert.FromBase64String(base64ImageString.Replace("data:image/jpeg;base64,", ""));
|
||||
using var ms = new MemoryStream(imageBytes);
|
||||
var image = System.Drawing.Image.FromStream(ms);
|
||||
using (var bmpStream = new MemoryStream())
|
||||
{
|
||||
using var bmpStream = new MemoryStream();
|
||||
image.Save(bmpStream, imageType);
|
||||
var bmpBytes = bmpStream.ToArray();
|
||||
File.WriteAllBytes(fileName, bmpBytes);
|
||||
}
|
||||
// var bmpBytes = bmpStream.ToArray();
|
||||
// File.WriteAllBytes(fileName, bmpBytes);
|
||||
|
||||
image.Dispose();
|
||||
return fileName;
|
||||
return image;
|
||||
// image.Dispose();
|
||||
// return fileName;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return "";
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,17 +1,9 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text.Encodings.Web;
|
||||
using System.Text.Json;
|
||||
using System.Text.Unicode;
|
||||
using System.Threading.Tasks;
|
||||
using System.Threading.Tasks;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Controls.Notifications;
|
||||
using Avalonia.Threading;
|
||||
using detect.gui.VWMS;
|
||||
using detect.gui.VWS;
|
||||
using OfficeOpenXml;
|
||||
using Splat;
|
||||
using WebViewControl;
|
||||
|
||||
@ -21,55 +13,55 @@ public class WebViewService(MainWindow? w)
|
||||
{
|
||||
public MainWindow? Self { get; set; } = w;
|
||||
|
||||
[Obsolete("过时的")]
|
||||
public async Task<string?> ImportExcel()
|
||||
{
|
||||
var dialog = new OpenFileDialog
|
||||
{
|
||||
Title = "打开文件",
|
||||
AllowMultiple = false,
|
||||
Filters =
|
||||
[
|
||||
new FileDialogFilter { Name = "Excel Files", Extensions = { "*.xls; *.xlsx" } }
|
||||
]
|
||||
};
|
||||
var result = await dialog.ShowAsync(Self!);
|
||||
if (result is not { Length: 1 }) return null;
|
||||
try
|
||||
{
|
||||
return ConvertExcelToJson(result[0]);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
// [Obsolete("过时的")]
|
||||
// public async Task<string?> ImportExcel()
|
||||
// {
|
||||
// var dialog = new OpenFileDialog
|
||||
// {
|
||||
// Title = "打开文件",
|
||||
// AllowMultiple = false,
|
||||
// Filters =
|
||||
// [
|
||||
// new FileDialogFilter { Name = "Excel Files", Extensions = { "*.xls; *.xlsx" } }
|
||||
// ]
|
||||
// };
|
||||
// var result = await dialog.ShowAsync(Self!);
|
||||
// if (result is not { Length: 1 }) return null;
|
||||
// try
|
||||
// {
|
||||
// return ConvertExcelToJson(result[0]);
|
||||
// }
|
||||
// catch
|
||||
// {
|
||||
// return null;
|
||||
// }
|
||||
// }
|
||||
|
||||
public static string ConvertExcelToJson(string excelFilePath)
|
||||
{
|
||||
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
|
||||
var fileInfo = new FileInfo(excelFilePath);
|
||||
using var package = new ExcelPackage(fileInfo);
|
||||
var worksheet = package.Workbook.Worksheets[0];
|
||||
var rowCount = worksheet.Dimension.Rows;
|
||||
var colCount = worksheet.Dimension.Columns;
|
||||
|
||||
var data = new List<Dictionary<string, object>>();
|
||||
var headers = Enumerable.Range(1, colCount)
|
||||
.Select(col => worksheet.Cells[1, col].Text)
|
||||
.ToList();
|
||||
for (var row = 2; row <= rowCount; row++)
|
||||
{
|
||||
var rowData = new Dictionary<string, object>();
|
||||
for (var col = 1; col <= colCount; col++)
|
||||
{
|
||||
rowData[headers[col - 1]] = worksheet.Cells[row, col].Text;
|
||||
}
|
||||
|
||||
data.Add(rowData);
|
||||
}
|
||||
return JsonSerializer.Serialize(data, new JsonSerializerOptions { WriteIndented = true, Encoder = JavaScriptEncoder.Create(UnicodeRanges.All) });
|
||||
}
|
||||
// public static string ConvertExcelToJson(string excelFilePath)
|
||||
// {
|
||||
// ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
|
||||
// var fileInfo = new FileInfo(excelFilePath);
|
||||
// using var package = new ExcelPackage(fileInfo);
|
||||
// var worksheet = package.Workbook.Worksheets[0];
|
||||
// var rowCount = worksheet.Dimension.Rows;
|
||||
// var colCount = worksheet.Dimension.Columns;
|
||||
//
|
||||
// var data = new List<Dictionary<string, object>>();
|
||||
// var headers = Enumerable.Range(1, colCount)
|
||||
// .Select(col => worksheet.Cells[1, col].Text)
|
||||
// .ToList();
|
||||
// for (var row = 2; row <= rowCount; row++)
|
||||
// {
|
||||
// var rowData = new Dictionary<string, object>();
|
||||
// for (var col = 1; col <= colCount; col++)
|
||||
// {
|
||||
// rowData[headers[col - 1]] = worksheet.Cells[row, col].Text;
|
||||
// }
|
||||
//
|
||||
// data.Add(rowData);
|
||||
// }
|
||||
// return JsonSerializer.Serialize(data, new JsonSerializerOptions { WriteIndented = true, Encoder = JavaScriptEncoder.Create(UnicodeRanges.All) });
|
||||
// }
|
||||
|
||||
public Task SetIsLoading(bool isLoading)
|
||||
{
|
||||
|
@ -1,12 +1,13 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
|
||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
|
||||
<Platforms>AnyCPU;x64</Platforms>
|
||||
<ApplicationIcon>Assets\logo.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
@ -32,7 +33,6 @@
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="7.0.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageReference Include="OfficeOpenXml.Extension.AspNetCore" Version="1.0.0" />
|
||||
<PackageReference Include="PaddleOCRSharp" Version="4.4.0.2" />
|
||||
<PackageReference Include="RestSharp" Version="112.0.0" />
|
||||
<PackageReference Include="Serilog" Version="4.1.0" />
|
||||
@ -40,7 +40,6 @@
|
||||
<PackageReference Include="Serilog.Sinks.Console" Version="6.0.0" />
|
||||
<PackageReference Include="Serilog.Sinks.File" Version="6.0.0" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="7.0.0" />
|
||||
<PackageReference Include="Tesseract" Version="5.2.0" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
|
@ -6,6 +6,7 @@
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACommonBrowserAdapter_002Ecs_002Fl_003AC_0021_003FUsers_003FNick_0020Wang_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Ff4f16e8c3bfe1b303dac9ad0491e3142f9d145ffbd9eaf32f291d9bb6cb31f_003FCommonBrowserAdapter_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AControl_002Ecs_002Fl_003AC_0021_003FUsers_003FNick_0020Wang_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Ff963a2a29ea2bb2d4ad8737293b45c4edbd94e55219dc42cf68343d6d91d9_003FControl_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AControl_002Ecs_002Fl_003AC_0021_003FUsers_003Fxiongwei_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Ff963a2a29ea2bb2d4ad8737293b45c4edbd94e55219dc42cf68343d6d91d9_003FControl_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AConvert_002Ecs_002Fl_003AC_0021_003FUsers_003FNick_0020Wang_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F2832e8c2b81f4641b3863f406ce3a519c90938_003Fa7_003Fbafa7f7b_003FConvert_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AConvert_002Ecs_002Fl_003AC_0021_003FUsers_003FNick_0020Wang_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fb2b917c507d64d0980727dbdd83b6585c8f8a0_003Fae_003F21158426_003FConvert_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADbContext_002Ecs_002Fl_003AC_0021_003FUsers_003FNick_0020Wang_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Faacc74311ca994f12b71cddb22241be9d6654c65e94f5985c5488dee396916f_003FDbContext_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADependencyResolverMixins_002Ecs_002Fl_003AC_0021_003FUsers_003FNick_0020Wang_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fca0d4592dc494bbaa872fd9db942335922638_003Ff9_003Fb0105fc3_003FDependencyResolverMixins_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
@ -29,6 +30,7 @@
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AJsonStringEnumConverter_002Ecs_002Fl_003AC_0021_003FUsers_003Fxiongwei_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fe8fd44bb4fe5af449849853612f32962e78c0e82a7b6a4307a7bcae61a547a_003FJsonStringEnumConverter_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AList_00601_002Ecs_002Fl_003AC_0021_003FUsers_003FNick_0020Wang_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F2832e8c2b81f4641b3863f406ce3a519c90938_003F91_003Ff40bad6e_003FList_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ALocator_002Ecs_002Fl_003AC_0021_003FUsers_003FNick_0020Wang_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fcf54cc1573c8f4a376437dc7b76dc8161cde5af828e4b880c5826778c7de6ae5_003FLocator_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMethodBaseInvoker_002Ecs_002Fl_003AC_0021_003FUsers_003FNick_0020Wang_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F2832e8c2b81f4641b3863f406ce3a519c90938_003F8d_003Fd2910eb2_003FMethodBaseInvoker_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMethodBaseInvoker_002Ecs_002Fl_003AC_0021_003FUsers_003FNick_0020Wang_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fd882146b4f265f10bcbec2663fce248db9ffec5fa1aeaf76e32a11ba5eafcd6_003FMethodBaseInvoker_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANameScopeExtensions_002Ecs_002Fl_003AC_0021_003FUsers_003FNick_0020Wang_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F262340175512b8eb1fbf3ba15178a24384aa0ef6c1e268ed6ca51d5c249e2_003FNameScopeExtensions_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AReactiveCommandBase_002Ecs_002Fl_003AC_0021_003FUsers_003FNick_0020Wang_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fd8c4af3416758fd750ab8cf4e2117d76fd3e73c9259c1517e228c75cd49fe_003FReactiveCommandBase_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
|
Loading…
Reference in New Issue
Block a user