國內供應商管理_C#串接工商登記API_補齊登記資本額X實收資本額X營業登記現況資訊


https://data.gcis.nat.gov.tw/main/index

工商登記平台主要是針對國內廠商,有統一編號的才能撈取的到。
此外資本額又細分兩種欄位,分別是
資本總額(也就是登記資本額),跟實收資本額(又稱發行資本)。


登記資本額是公司在成立時,向主管機關(如經濟部)登記的資本數額,代表公司允許發行的最大股本。這是公司可以籌集的資金上限,但不一定實際投入。

實收資本= 股本  +  資本公積(額外實收資本)​​ = 已發行股份總數 x 每股金額
實收資本額是公司實際已經收取的資本,代表股東實際投入的金額。這是公司目前可用的資本,用於經營或投資,並會反映在公司的財務報表中。

換言之,要有上市上櫃的廠商才會有實收資本額欄位。

https://data.gcis.nat.gov.tw/od/rule



在此以新竹市工廠廠商名冊的Open data來做演示。


https://data.gov.tw/dataset/67538

下載下來的excel預設是這些欄位資訊,美中不足的地方在於缺少資本額資訊跟營業登記現況。



工商登記平台提供的API介接十分豐富

在示範體驗中
5.公司登記關鍵字查詢,可讓我們測試傳入參數呼叫後對應回傳欄位




其中公司狀況代碼也就表示其營業登記現況,01表示「核准設立」。





公司登記_公司狀態代碼對照表
其實不只01,另外不同Company_Status狀態碼Mapping可參照這份excel。






這邊將excel重新更名為新竹市工廠廠商名冊.xlsx
多擴充三個欄位到F,G,H 

存放到指定C槽路徑



C#主控台專案



先建立好我們的BusinessInfo類別。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    public class BusinessInfo
    {
        public string Business_Accounting_NO { get; set; }
        public string Company_Name { get; set; }
        public string Company_Status { get; set; }
        public string Company_Status_Desc { get; set; }
        public long? Capital_Stock_Amount { get; set; }
        public long? Paid_In_Capital_Amount { get; set; }
        public string Responsible_Name { get; set; }
        public string Register_Organization { get; set; }
        public string Register_Organization_Desc { get; set; }
        public string Company_Location { get; set; }
        public string Company_Setup_Date { get; set; }
        public string Change_Of_Approval_Data { get; set; }
    }
}

安裝好相關nuget套件



Program.cs

using RestSharp;
using RestSharp.Extensions;
using RestSharp.Authenticators;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq;
using System.Net;
using Newtonsoft.Json;
using System.IO;
using OfficeOpenXml;

namespace ConsoleApp1
{
    class Program
    {
        static void Main()
        {
            // 設定 Excel 檔案的路徑
            string filePath = @"C:\excel_data\新竹市工廠廠商名冊.xlsx"; // 修改為您的檔案路徑
            // 讀取 Excel 檔案
            FileInfo fileInfo = new FileInfo(filePath);
            ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
            using (ExcelPackage package = new ExcelPackage(fileInfo))
            {
                ExcelWorksheet worksheet = package.Workbook.Worksheets[0]; // 取得第一個工作表
                int row = 2; // 從第二行開始(第一行是表頭)
                while (worksheet.Cells[row, 2].Value != null) // B欄不為空
                {
                    string valueB = worksheet.Cells[row, 2].Text; // 讀取 B 欄的值

                    string keyword = valueB;
                    using (WebClient client = new WebClient())
                    {
                        //string keyword = "台灣積體電路製造股份有限公司";
                        string _ul = "http://data.gcis.nat.gov.tw/od/data/api/6BBA2268-1367-4B42-9CCA-BC17499EBE8C?$format=json&$filter=Company_Name%20like%20" + keyword + "%20and%20Company_Status%20eq%2001&$skip=0&$top=50";
                        string jsonStr = Encoding.UTF8.GetString(client.DownloadData(new Uri(_ul.Trim())));
                        List<BusinessInfo> businessInfoList = JsonConvert.DeserializeObject<List<BusinessInfo>>(jsonStr);
                        if(string.IsNullOrWhiteSpace(jsonStr) || businessInfoList == null)
                        {
                            row++;
                            Console.WriteLine($"廠商{keyword},工商登記無資料跳過");
                            continue;
                        }

                        if (businessInfoList != null && businessInfoList.Count > 0)
                        {
                            worksheet.Cells[row, 6].Value = businessInfoList[0].Capital_Stock_Amount;
                            worksheet.Cells[row, 7].Value = businessInfoList[0].Paid_In_Capital_Amount;
                            worksheet.Cells[row, 8].Value = businessInfoList[0].Company_Status;
                        }
                        Console.WriteLine($"公司名稱: {businessInfoList[0].Company_Name}/統一編號:{businessInfoList[0].Business_Accounting_NO},已完成資本額及營業現況維護");

                        //foreach (var business in businessInfoList)
                        //{
                        //    Console.WriteLine($"統一編號: {business.Business_Accounting_NO}");
                        //    Console.WriteLine($"公司名稱: {business.Company_Name}");
                        //    Console.WriteLine($"公司狀態: {business.Company_Status} - {business.Company_Status_Desc}");
                        //    Console.WriteLine($"資本額: {business.Capital_Stock_Amount}");
                        //    Console.WriteLine($"實收資本額: {business.Paid_In_Capital_Amount}");
                        //    Console.WriteLine($"負責人: {business.Responsible_Name}");
                        //    Console.WriteLine($"登記機關: {business.Register_Organization_Desc}");
                        //    Console.WriteLine($"公司地址: {business.Company_Location}");
                        //    Console.WriteLine($"公司設立日期: {business.Company_Setup_Date}");
                        //    Console.WriteLine($"變更核准日期: {business.Change_Of_Approval_Data}");
                        //    Console.WriteLine();
                        //}
                    }
                    row++;
                }

                // 儲存更改
                package.Save();
            }
            Console.WriteLine($"已完成供應商批次資本額及營業現況維護");


            Console.ReadKey();
        }

       
    }
}




運行效果就可以放著讓其自動跑批次,悠閒去泡杯咖啡上洗手間休息等他跑10~20分鐘
視資料多寡。


也已幫我們批次維護到excel中。







Ref:
https://relianz.tw/blog/capital/
https://rich01.com/what-is-capital-definition/
https://findbiz.nat.gov.tw/fts/query/QueryBar/queryInit.do

留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

Architecture(架構) 和 Framework(框架) 有何不同?_軟體設計前的事前規劃的藍圖概念

經得起原始碼資安弱點掃描的程式設計習慣培養(五)_Missing HSTS Header