//https://msdn.microsoft.com/de-de/library/microsoft.office.interop.excel.workbooks.open(v=office.11).aspx public void Open(int UpdateLinks = 0, bool ReadOnly = true, int Format = 5, string Password = "", string WriteResPassword = "", bool IgnoreReadOnlyRecommended = true, XlPlatform Origin = XlPlatform.xlWindows, string Delimiter = "", bool Editable = false, bool Notify = false, bool Converter = false, bool AddToMru = false, bool Local = false, bool CorruptLoad = false) { try { _objWorkBook = _objExcel.Workbooks.Open(_fileName, _updateLinks, _readOnly, _format, _password, _writeResPassword, _ignoreReadOnlyRecommended, _origin, _delimiter, _editable, _notify, _converter, _addToMru, _local, _corruptLoad); _ReadWorkSheet(); //return true; } catch (Exception e) { //throw new Exception(e.Message); //return false; } }
public ExcelWorker(string FileName) { _objExcel = new Application(); _workSheet = 1; _fileName = FileName; _updateLinks = 0; _readOnly = true; _format = 5; _password = ""; _writeResPassword = ""; _ignoreReadOnlyRecommended = true; _origin = XlPlatform.xlWindows; _delimiter = ""; _editable = false; _notify = false; _converter = false; _addToMru = false; _local = false; _corruptLoad = false; }
/// <summary>载入一个文本文件,并将其作为包含单个工作表的新工作簿进行分列处理,然后在此工作表中放入经过分列处理的文本文件数据。 /// 说明: /// FieldInfo 参数信息 /// 只有在安装并选定了中国台湾地区语言支持时才可使用 xlEMDFormat。xlEMDFormat 常量指定使用中国台湾地区纪元日期。 /// 列说明符可为任意顺序。输入数据中如果某列没有列说明符,则用常规设置对该列进行分列处理。 /// </summary> /// <param name="Filename">指定要打开和分列的文本文件的名称。</param> /// <param name="Origin">指定文本文件来源。可为以下 XlPlatform 常量之一:xlMacintosh、xlWindows 或 xlMSDOS。此外,它还可以是一个整数,表示所需代码页的代码页编号。例如,“1256”指定源文本文件的编码是阿拉伯语 (Windows)。如果省略该参数,则此方法将使用“文本导入向导”中“文件原始格式”选项的当前设置。</param> /// <param name="StartRow">文本分列处理的起始行号。默认值为 1。</param> /// <param name="DataType">指定文件中数据的列格式。可为以下 XlTextParsingType 常量之一:xlDelimited 或 xlFixedWidth。如果未指定该参数,则 Microsoft Excel 将尝试在打开文件时确定列格式。</param> /// <param name="TextQualifier">指定文本识别符号。</param> /// <param name="ConsecutiveDelimiter">如果为 True,则将连续分隔符视为一个分隔符。默认值为 False。</param> /// <param name="Tab">如果为 True,则将制表符用作分隔符(DataType 必须为 xlDelimited)。默认值为 False。</param> /// <param name="Semicolon">如果为 True,则将分号用作分隔符(DataType 必须为 xlDelimited)。默认值为 False。</param> /// <param name="Comma">如果为 True,则将逗号用作分隔符(DataType 必须为 xlDelimited)。默认值为 False。</param> /// <param name="Space">如果为 True,则将空格用作分隔符(DataType 必须为 xlDelimited)。默认值为 False。</param> /// <param name="Other">如果为 True,则将 OtherChar 参数指定的字符用作分隔符(DataType 必须为 xlDelimited)。默认值为 False。</param> /// <param name="OtherChar">(如果 Other 为 True,则为必选项)。当 Other 为 True 时,指定分隔符。如果指定了多个字符,则仅使用字符串中的第一个字符而忽略剩余字符。</param> /// <param name="FieldInfo">包含单列数据相关分列信息的数组。对该参数的解释取决于 DataType 的值。如果此数据由分隔符分隔,则该参数为由两元素数组组成的数组,其中每个两元素数组指定一个特定列的转换选项。第一个元素为列标(从 1 开始),第二个元素是 XlColumnDataType 的常量之一,用于指定分列方式。</param> /// <param name="TextVisualLayout">文本的可视布局。</param> /// <param name="DecimalSeparator">识别数字时,Microsoft Excel 使用的小数分隔符。默认设置为系统设置。</param> /// <param name="ThousandsSeparator">识别数字时,Excel 使用的千位分隔符。默认设置为系统设置。</param> /// <param name="TrailingMinusNumbers">如果应将结尾为减号字符的数字视为负数处理,则指定为 True。如果为 False 或省略该参数,则将结尾为减号字符的数字视为文本处理。</param> /// <param name="Local">如果分隔符、数字和数据格式应使用计算机的区域设置,则指定为 True。</param> /// <returns></returns> public Workbook OpenText(string Filename, XlPlatform? Origin = null, int? StartRow = null, XlTextParsingType? DataType = null, XlTextQualifier? TextQualifier = null, bool? ConsecutiveDelimiter = null, bool? Tab = null, bool? Semicolon = null, bool? Comma = null, bool? Space = null, bool? Other = null, string OtherChar = null, int?[] FieldInfo = null, string TextVisualLayout = null, char? DecimalSeparator = null, char? ThousandsSeparator = null, bool? TrailingMinusNumbers = null, bool? Local = null) { _objaParameters = new object[18] { Filename == null ? System.Type.Missing : Filename, Origin == null ? System.Type.Missing : Origin, StartRow == null ? System.Type.Missing : StartRow, DataType == null ? System.Type.Missing : DataType, TextQualifier == null ? System.Type.Missing : TextQualifier, ConsecutiveDelimiter == null ? System.Type.Missing : ConsecutiveDelimiter, Tab == null ? System.Type.Missing : Tab, Semicolon == null ? System.Type.Missing : Semicolon, Comma == null ? System.Type.Missing : Comma, Space == null ? System.Type.Missing : Space, Other == null ? System.Type.Missing : Other, OtherChar == null ? System.Type.Missing : OtherChar, FieldInfo == null ? System.Type.Missing : FieldInfo, TextVisualLayout == null ? System.Type.Missing : TextVisualLayout, DecimalSeparator == null ? System.Type.Missing : DecimalSeparator, ThousandsSeparator == null ? System.Type.Missing : ThousandsSeparator, TrailingMinusNumbers == null ? System.Type.Missing : TrailingMinusNumbers, Local == null ? System.Type.Missing : Local }; return new Workbook(_objWorkbooks.GetType().InvokeMember("OpenText", BindingFlags.InvokeMethod, null, _objWorkbooks, _objaParameters)); }
/// <summary>打开一个工作簿,返回 Workbook /// </summary> /// <param name="Filename">要打开的工作簿的文件名</param> /// <param name="UpdateLinks">指定文件中链接的更新方式。如果省略本参数,则提示用户选择链接的更新方式。否则,该参数的取值应为下表中的某个值。 /// 您可在 UpdateLinks 参数中指定下面的一个值,以确定文件的分隔字符: /// 0 不更新任何引用。 /// 1 更新外部引用,但不更新远程引用。 /// 2 更新远程引用,但不更新外部引用。 /// 3 同时更新远程引用和外部引用。 </param> /// <param name="ReadOnly">如果为 True,则以只读模式打开工作簿。</param> /// <param name="Format">如果 Microsoft Excel 正在打开文本文件,则由此参数指定分隔符。如果省略此参数,则使用当前的分隔符。有关此参数值的详细信息,请参阅“备注”部分。 /// 您可在 Format 参数中指定下面的一个值,以确定文件的分隔字符: /// 1 标签 /// 2 逗号 /// 3 空格 /// 4 分号 /// 5 无 /// 6 自定义字符(请参阅 Delimiter 参数)</param> /// <param name="Password">一个字符串,包含打开受保护工作簿所需的密码。如果省略此参数并且工作簿已设置密码,则提示用户输入密码。</param> /// <param name="WriteResPassword">一个字符串,包含写入受保护工作簿所需的密码。如果省略此参数并且工作簿已设置密码,则提示用户输入密码。</param> /// <param name="IgnoreReadOnlyRecommended">如果为 True,则不让 Microsoft Excel 显示只读的建议消息(如果该工作簿以“建议只读”选项保存)。</param> /// <param name="Origin">如果该文件为文本文件,则此参数用于指示该文件来源于何种操作系统(以便正确映射代码页和回车/换行符 (CR/LF))。可为以下 XlPlatform 常量之一:xlMacintosh、xlWindows 或 xlMSDOS。如果省略此参数,则使用当前操作系统。</param> /// <param name="Delimiter">如果该文件为文本文件并且 Format 参数为 6,则此参数是一个字符串,指定用作分隔符的字符。例如,可使用 Chr(9) 代表制表符,使用“,”代表逗号,使用“;”代表分号,或者使用自定义字符。只使用字符串的第一个字符。</param> /// <param name="Editable">如果文件为 Microsoft Excel 4.0 加载宏,则此参数为 True 时可打开该加载宏以使其在窗口中可见。如果此参数为 False 或被省略,则以隐藏方式打开加载宏,并且无法设为可见。本选项不能应用于由 Microsoft Excel 5.0 或更高版本的 Microsoft Excel 创建的加载宏。如果文件是 Excel 模板,则参数值为 True 时,会打开指定模板进行编辑。参数值为 False 时,可根据指定模板打开新的工作簿。默认值为 False。</param> /// <param name="Notify">当文件不能以可读写模式打开时,如果此参数为 True,则可将该文件添加到文件通知列表。Microsoft Excel 将以只读模式打开该文件并轮询文件通知列表,并在文件可用时向用户发出通知。如果此参数为 False 或被省略,则不请求任何通知,并且不能打开任何不可用的文件。</param> /// <param name="Converter">打开文件时试用的第一个文件转换器的索引。首先试用的是指定的文件转换器;如果该转换器不能识别此文件,则试用所有其他转换器。转换器索引由 FileConverters 属性返回的转换器行号组成。</param> /// <param name="AddToMru">如果为 True,则将该工作簿添加到最近使用的文件列表中。默认值为 False。</param> /// <param name="Local">如果为 True,则以 Microsoft Excel(包括控制面板设置)的语言保存文件。如果为 False(默认值),则以 Visual Basic for Applications (VBA) (Visual Basic for Applications (VBA):Microsoft Visual Basic 的宏语言版本,用于编写基于 Microsoft Windows 的应用程序,内置于多个 Microsoft 程序中。) 的语言保存文件,其中 Visual Basic for Applications (VBA) 通常为美国英语版本,除非从中运行 Workbooks.Open 的 VBA 项目是旧的已国际化的 XL5/95 VBA 项目。</param> /// <param name="CorruptLoad">可为以下常量之一:xlNormalLoad、xlRepairFile 和 xlExtractData。如果未指定任何值,则默认行为通常为普通加载,但如果 Excel 已尝试打开该文件,则可以是安全加载或数据恢复状态。首先尝试普通加载。如果 Excel 在打开文件时停止操作,则尝试安全加载状态。如果 Excel 再次停止操作,则尝试数据恢复状态。</param> /// <returns></returns> public Workbook Open(string Filename, object UpdateLinks = null, bool? ReadOnly = null, object Format = null, string Password = null, string WriteResPassword = null, bool? IgnoreReadOnlyRecommended = null, XlPlatform? Origin = null, char? Delimiter = null, bool? Editable = null, bool? Notify = null, object Converter = null, bool? AddToMru = null, bool? Local = null, XlCorruptLoad? CorruptLoad = null) { _objaParameters = new object[15] { Filename, UpdateLinks == null ? System.Type.Missing:UpdateLinks, ReadOnly == null ? System.Type.Missing:ReadOnly, Format == null ? System.Type.Missing:Format, Password == null ? System.Type.Missing:Password, WriteResPassword == null ? System.Type.Missing:WriteResPassword, IgnoreReadOnlyRecommended == null ? System.Type.Missing:IgnoreReadOnlyRecommended, Origin == null ? System.Type.Missing:Origin, Delimiter == null ? System.Type.Missing:Delimiter, Editable == null ? System.Type.Missing:Editable, Notify == null ? System.Type.Missing:Notify, Converter == null ? System.Type.Missing:Converter, AddToMru == null ? System.Type.Missing:AddToMru, Local == null ? System.Type.Missing:Local, CorruptLoad == null ? System.Type.Missing:CorruptLoad }; return new Workbook(_objWorkbooks.GetType().InvokeMember("Open", BindingFlags.InvokeMethod, null, _objWorkbooks, _objaParameters)); }