条目是:
创建符合以下要求的 C# 代码:
我们有 3 个工作表,其名称如下:(记录、消费_kardex、工具_列表)。代码启动时将要求两个值,第一个值用于“零件编号”,第二个值用于“操作”。用户输入这两个值后,代码将根据第一个值过滤记录表中的“I”列。然后它将根据第二个值过滤“E”列。接下来,它将计算记录表中 F 列和 G 列中所有值的总和(总和将在应用 I 和 E 列过滤器后计算)。该值将写入第四个工作表 A 列,该工作表将使用名称“comparison.xlsx”创建。
然后,代码将根据用户输入的第一个值(零件编号)过滤 tool_lists 表中的 A 列。在 tool_lists 表中,代码将 D 列和 E 列相乘 (D * E),并将该乘法的所有结果加在一起形成一个结果。该结果将写入第四个表中名为“比较”的 B 列。
接下来,在 tool_lists 工作表中,我们将在 A 列中再次使用过滤,我们将从第 2 行中获取 B 列中的值,并在消费_kardex 工作表中使用它们过滤 B 列。然后,在过滤后的消费_kardex表中,我们将计算C列中的值的总和并将其写入C列中的第四个表比较中。
错误出现在第17行,代码如下:
using System.IO;
using Microsoft.Office.Interop.Excel;
namespace ConsoleApp1
{
class Program
{
public static void Main(string[] args)
{
// Získáme vstupní hodnoty od uživatele
Console.WriteLine("Zadejte číslo dílce:");
string cisloDilc = Console.ReadLine();
Console.WriteLine("Zadejte operaci:");
string operace = Console.ReadLine();
// Vytvoříme nový sešit s názvem "srovnani.xlsx"
Workbook workbook = new Workbook();
workbook.SaveAs("srovnani.xlsx");
// Vytvoříme instanci třídy Worksheet pro každý sešit
Worksheet worksheet1 = workbook.Worksheets["zaznamy"];
Worksheet worksheet2 = workbook.Worksheets["nastrojove_listy"];
Worksheet worksheet3 = workbook.Worksheets["spotreba_kardex"];
// Vyfiltrujeme sloupec "I" v tabulce "zaznamy" podle hodnoty "cisloDilc"
worksheet1.Range["I1:I"].AutoFilter(cisloDilc);
// Vyfiltrujeme sloupec "E" v tabulce "zaznamy" podle hodnoty "operace"
worksheet1.Range["E1:E"].AutoFilter(operace);
// Vypočítáme součet hodnot ze sloupců "F" a "G" v tabulce "zaznamy"
int soucet = 0;
for (int i = 1; i <= worksheet1.UsedRange.Rows.Count; i++)
{
soucet += Convert.ToInt32(worksheet1.Cells[i, 6].Value) + Convert.ToInt32(worksheet1.Cells[i, 7].Value);
}
// Zapíšeme součet do sloupce "A" v tabulce "srovnani"
worksheet2.Cells[1, 1].Value = soucet;
// Vyfiltrujeme sloupec "A" v tabulce "nastrojove_listy" podle hodnoty "cisloDilc"
worksheet2.Range["A1:A"].AutoFilter(cisloDilc);
// Vypočítáme součet hodnot ze sloupců "D" a "E" v tabulce "nastrojove_listy"
soucet = 0;
for (int i = 1; i <= worksheet2.UsedRange.Rows.Count; i++)
{
soucet += Convert.ToInt32(worksheet2.Cells[i, 4].Value) * Convert.ToInt32(worksheet2.Cells[i, 5].Value);
}
// Zapíšeme součet do sloupce "B" v tabulce "srovnani"
worksheet3.Cells[1, 2].Value = soucet;
// Vyfiltrujeme sloupec "B" v tabulce "nastrojove_listy" od řádku 2
worksheet2.Range["B2:B"].AutoFilter(cisloDilc);
// Vyfiltrujeme sloupec "B" v tabulce "spotreba_kardex" podle hodnot ze sloupce "B" v tabulce "nastrojove_listy"
worksheet3.Range["B1:B"].AutoFilter(worksheet2.Range["B2:B"]);
// Vypočítáme součet hodnot ze sloupce "C" v tabulce "spotreba_kardex"
soucet = 0;
for (int i = 1; i <= worksheet3.UsedRange.Rows.Count; i++)
{
soucet += Convert.ToInt32(worksheet3.Cells[i, 2].Value);
}
// Zapíšeme součet do sloupce "C" v tabulce "srovnani"
worksheet3.Cells[1, 3].Value = soucet;
// Uložíme sešit "srovnani.xlsx"
workbook.Save();
Console.WriteLine("Srovnání dokončeno.");
}
}
}
非常感谢您的帮助。
我尝试创建 Excel 文件,但例外的是,它会毫无问题地创建。
错误:
System.Runtime.InteropServices.COMException: Retrieving the COM class factory for component with CLSID {00020819-0000-0000-C000-000000000046} failed due to the following error: 80040154 Třída není zaregistrována (0x80040154 (REGDB_E_CLASSNOTREG)).
线上:
Workbook workbook = new Workbook();
可能是我的VS2022设置错误。
首先您需要安装 Excel 应用程序:
using System.IO;
using Microsoft.Office.Interop.Excel;
namespace ConsoleApp1
{
class Program
{
public static void Main(string[] args)
{
// Získáme vstupní hodnoty od uživatele
Console.WriteLine("Zadejte číslo dílce:");
string cisloDilc = Console.ReadLine();
Console.WriteLine("Zadejte operaci:");
string operace = Console.ReadLine();
// Vytvoříme nový sešit s názvem "srovnani.xlsx"
var oXL = new Microsoft.Office.Interop.Excel.Application();
var workbook = oXL.Workbooks.Add();
workbook.SaveAs("srovnani.xlsx");
...