我试图在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()的第一个调用,并取消注释第二个(仅提供文件名而不提供完整路径的)注释,则即使没有“文件存在”消息框,也会告诉我找不到该文件。出现,验证其存在。
答案 0 :(得分:2)
Directory.GetCurrentDirectory
-
“获取应用程序的当前工作目录”
这里的“应用程序”是您的C#可执行文件:启动的Excel应用程序实例不在与C#可执行文件相同的上下文中运行,因此其“当前目录”不一定相同。
如果知道完整路径,只需将其传递给Excel-无需尝试仅传递文件名。
仅供参考-GetCurrentDirectory
可能不是查找Excel文件最可靠的方式
How can I get the application's path in a .NET console application?