System.TypeInitializationException对Class的FORM访问

我正在一个项目,我需要调用一个类,我创build和pipe理一个Excel文件。 但是对于未定义的原因,我不能从我的FORM中调用这个函数。 它返回一个exception,如下所示:System.TypeInitializationException。 我已经检查了我的class级,但是我没有看到什么是错的。

我想要调用我的Excel_Management类的表单:

Imports System.Diagnostics Imports System.Windows.Forms Public Class Proc_Form Private excel_Manage = New Excel_Management Public Shared ok As Boolean = New Boolean If My.Settings.check_Directory = False Then If FolderBrowserDialog1.ShowDialog = DialogResult.OK Then My.Settings.path = FolderBrowserDialog1.SelectedPath My.Settings.check_Directory = True 'My.Settings.Save() MsgBox(My.Settings.path) excel_Manage.check_Excel() End If 

Excel_Management类:

 Imports Microsoft.Office.Interop Imports Microsoft.Office.Interop.Excel Imports System.Windows.Forms Imports System.Text.RegularExpressions Imports System.String Public Class Excel_Management Public Shared appExcel As Excel.Application = New Excel.Application Public Shared wsExcel As Excel.Worksheet = New Excel.Worksheet Public Shared wbExcel As Excel.Workbook = New Excel.Workbook Public Shared file_name As String = "Name" & DateTime.Now.ToString("yyyy") & ".xls" Public Shared sheet_name As String = "S " & DatePart(DateInterval.WeekOfYear, Now()) Public Shared check_test As Boolean = False Public Shared excel_check As New Proc_Form Public Shared misValue As Object = System.Reflection.Missing.Value Public Shared message, title, defaultValue As String Public Shared myValue As Object = New Object Public Shared i As Integer = 1 Public Shared match As Match = Regex.Match(myValue, "[^a-z0-9]") Shared Sub check_Excel() If appExcel Is Nothing Then MsgBox("No Excel Detected !") Return Else create_Excel() End If End Sub 

你能看到我的代码不允许我访问我的Excel类的任何问题?

先谢谢你。

我认为这个问题是你不能创build一个New Excel.Workbook ,因为它是一个接口。

改为:

 Public Shared wbExcel As Excel.Workbook = appExcel.Workbooks.Add(System.Reflection.Missing.Value) 

从这里: Excel工作簿input奇怪的错误 ,或者对这个问题的其他解决scheme之一。

另外,你的Regex.Match不能匹配一个对象。 我不知道我的myValue是什么,但取决于它是什么可能是一个选项:

 Regex.Match(myValue.ToString, "[^a-z0-9]") 

最后,如果你在Visual Studio中使用debugging器来解决这些错误,那么这些错误就显而易见了。 进入“DEBUG”菜单>“Exceptions …”,在“Thrown”列中的“Common Language Runtime Exceptions”旁边勾上勾号。 这应该有助于您debugging任何其他错误。