C# 调用OFFICE库将识别结果存放到EXCEL表

C# 调用OFFICE库将识别结果存放到EXCEL表

using Baidu.Aip.Ocr;
using IniParser;
using IniParser.Model;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
namespace 发票识别
{
    public partial class frmmain : Form
    {
        public List<string> listpath = new List<string> { };

        public frmmain()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            using (FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog())
            {
                folderBrowserDialog.Description = "请选择一个文件夹";
                DialogResult dialogResult = folderBrowserDialog.ShowDialog();

                if (dialogResult == DialogResult.OK)
                {
                    string selectedFolderPath = folderBrowserDialog.SelectedPath;
                    tbx_path.Text = selectedFolderPath;
                }
            }
        }


        private void Getfiles(string path)
        {

            string folderPath = path; // 替换为你的文件夹路径
            string[] filePaths = Directory.GetFiles(folderPath, "*", SearchOption.AllDirectories);

            foreach (string filePath in filePaths)
            {
                listpath.Add(filePath);
            }
            lbl_numcount.Text = listpath.Count.ToString();
        }
        private void btn_start_Click(object sender, EventArgs e)
        {
            Getfiles(tbx_path.Text);
            if (listpath.Count > 0)
            {
                chuli();
            }

        }
        private void chuli()
        {

            Excel.Application excelApp = new Excel.Application();
            // 创建一个新的工作簿
            Excel.Workbook workbook = excelApp.Workbooks.Add(Type.Missing);
            // 添加一个名为“发票识别”的新工作表
            Excel.Worksheet worksheet = workbook.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing) as Excel.Worksheet;
            worksheet.Name = "发票识别";
            excelApp.Visible = true;

            worksheet.Cells[1, 1] = "资产编号";
            worksheet.Cells[1, 2] = "发票文件名";
            worksheet.Cells[1, 3] = "OCR名称";
            worksheet.Cells[1, 4] = "OCR规格型号";
            worksheet.Cells[1, 5] = "OCR单位";
            worksheet.Cells[1, 6] = "OCR数量";
            worksheet.Cells[1, 7] = "OCR单价";
            worksheet.Cells[1, 8] = "OCR金额";
            worksheet.Cells[1, 9] = "合计";
            worksheet.Cells[1, 10] = "资产原值";
            worksheet.Cells[1, 11] = "购入日期";

            RetrunClass retrunClass = new RetrunClass();
            int iOCR = 2;
            int iOCR2 = 2;
            int iOCR3 = 2;
            int iOCR4 = 2;
            int iOCR5 = 2;
            int iOCR6 = 2;
            int iOCR7 = 2;
            int iO = 1;
            int iO2 = 0;//判断是否有异常标志位
            int i3 = 1;
            foreach (var item in listpath)
            {

                tbx_view_over.AppendText(item + "\r\n");
                lbl_chuli.Text = iO.ToString();
                //拆分文件名和资产编号
                string directoryName = Path.GetDirectoryName(item);//资产编号
                string fileName = Path.GetFileName(item);//文件名
                string parentFolderName = new DirectoryInfo(directoryName).Name;
                worksheet.Cells[iOCR, 1] = parentFolderName;
                worksheet.Cells[iOCR, 2] = fileName;

                //OCR内容
                var strname = JsonConvert.DeserializeObject<dynamic>(rest.StrPanth(item));
                var eritem = strname.words_result;
                if (strname != null)
                {
                    retrunClass.log_id = strname.log_id;
                    try
                    {
                        var OCRheji = eritem.AmountInFiguers;
                        var OCRyuanz = eritem.TotalAmount;
                        var OCRdate = eritem.InvoiceDate;
                        worksheet.Cells[iOCR, 9] = OCRheji;
                        worksheet.Cells[iOCR, 10] = OCRyuanz;
                        worksheet.Cells[iOCR, 11] = OCRdate;

                        var OCRname = eritem.CommodityName;
                        var OCRguige = eritem.CommodityType;
                        var OCRdanwei = eritem.CommodityUnit;
                        var OCRnum = eritem.CommodityNum;
                        var OCRprice = eritem.CommodityPrice;
                        var OCRjine = eritem.CommodityAmount;
                        foreach (var word in OCRname)
                        {
                            worksheet.Cells[iOCR2, 3] = word.word.ToString();
                            worksheet.Cells[iOCR2, 1] = parentFolderName;
                            iOCR2++;
                        }

                        foreach (var word in OCRguige)
                        {
                            worksheet.Cells[iOCR3, 4] = word.word.ToString();
                            iOCR3++;
                        }
                        foreach (var word in OCRdanwei)
                        {
                            worksheet.Cells[iOCR4, 5] = word.word.ToString();
                            iOCR4++;
                        }

                        foreach (var word in OCRnum)
                        {
                            worksheet.Cells[iOCR5, 6] = word.word;
                            iOCR5++;
                        }


                        foreach (var word in OCRprice)
                        {
                            worksheet.Cells[iOCR6, 7] = word.word;
                            iOCR6++;
                        }
                        foreach (var word in OCRjine)
                        {
                            worksheet.Cells[iOCR7, 8] = word.word;
                            iOCR7++;
                        }
                        iOCR = iOCR2;
                    }
                    catch (Exception)
                    {
                        iO2 = 1;
                        lbl_yichang.Text = i3.ToString();
                        worksheet.Cells[iOCR, 12] = "未完全识别成功";
                        i3 = i3 + 1;
                        iOCR = iOCR + 1;
                    }

                }

                iO = iO + 1;

            }
            workbook.Save();
            //workbook.Close();
            System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
            worksheet = null;
            workbook = null;
            excelApp = null;
            MessageBox.Show("处理完成!");

        }

        private void button2_Click(object sender, EventArgs e)
        {
            var parser = new FileIniDataParser();
            string iniFilePath = "config.ini";
            try
            {
                IniData data = parser.ReadFile(iniFilePath);
                string sectionName = "Apidate"; // 替换为你的节名
                string keyName = "AKEY"; // 替换为你的键名

                // 获取特定节和键的值
                string value = data[sectionName][keyName];
                MessageBox.Show(value);
            }
            catch (Exception ex)
            {
                //Console.WriteLine("Error reading INI file: " + ex.Message);
            }
        }
    }
}


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码猩

如果可以请支持我一下哟!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值