为什么Microsoft.Office.Interop.Excel需要完整的路径名才能打开文件?

时间:2019-10-07 20:14:27

标签: c# .net excel office-interop

我试图在Visual Studio 2012中创建的C#应用​​程序中打开Excel文件的时间太长了。我终于发现我需要提供Excel文件的完整路径名,即使它存在于同一文件夹中也是如此。作为可执行文件。为什么会这样?

<div class="modal fade" id="modal-default-{{ $user_id }}" style="display: none;" aria-hidden="true">
    <div class="modal-dialog">
        <form action="{{ route('dashboard.users.addNdistrict', $user->id) }}" method="post">
            @csrf
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">×</span>
                    </button>
                </div>
                <div class="modal-body">
                    <!-- joined_at -->
                    <div class="form-group row">
                        <label for="joined_at" class="col-md-3 col-form-label text-md-left required">{{ __('site.joined_at') }}</label>
                        <div class="col-md-8">
                            <div class="input-group date">
                                <input type="text" name="joined_at" value="{{ old('joined_at') }}"
                                    id="joined-date" class="form-control" data-date-end-date="0d">
                            </div>
                        </div>
                    </div>
                    <!-- ./joined_at -->

                  </div>
                <!--./modal_body-->
                <div class="modal-footer justify-content-between">
                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                    <button type="submit" class="btn btn-primary">Save</button>
                </div>
            </div> <!-- /.modal-content -->
        </form>
    </div> <!-- /.modal-dialog -->
</div>

<!-- jQuery -->
<script src="{{ asset('adminlte/plugins/jquery/jquery.min.js') }}"></script>  
<!-- DateTimePicker -->
<script src="{{ asset('adminlte/plugins/bootstrap-datepicker/js/bootstrap-datepicker.min.js') }}" defer></script>

<script>

    $(document).ready(function () {
        $('#joined-date').datepicker({
            todayHighlight: true,
            todayBtn: "linked",
            format: "yyyy-m-d",
            autoclose: true,
        });
    }); //document

</script>

此版本有效。但是,如果我注释掉对Open()的第一个调用,并取消注释第二个(仅提供文件名而不提供完整路径的)注释,则即使没有“文件存在”消息框,也会告诉我找不到该文件。出现,验证其存在。

1 个答案:

答案 0 :(得分:2)

https://docs.microsoft.com/en-us/dotnet/api/system.io.directory.getcurrentdirectory?view=netframework-4.8

Directory.GetCurrentDirectory-

  

“获取应用程序的当前工作目录”

这里的“应用程序”是您的C#可执行文件:启动的Excel应用程序实例不在与C#可执行文件相同的上下文中运行,因此其“当前目录”不一定相同。

如果知道完整路径,只需将其传递给Excel-无需尝试仅传递文件名。

仅供参考-GetCurrentDirectory可能不是查找Excel文件最可靠的方式

How can I get the application's path in a .NET console application?