我遇到了一个奇怪的问题。在我的控制台应用程序中,只有一个文件Workbooks.Open()打开以在我的测试应用程序中返回null或Comb_Object.And,它可以正确返回。 当我将文件名从'人员信息模板.xlsx'更改为任何其他类似'aaa.xlsx'时,它可以正确打开此文件。 我在Google搜索。有人说这可能是一个权限问题,我设置Everyone完全控制到这个文件。它不起作用。
Interop.Excel版本:14,0,4756,1000
Excel文件由Excel 2016创建
以下是我的代码
Application app = null;
Workbook curWB = null;
Worksheet curSheet = null;
app = new Application();
app.Visible = false;
app.UserControl = true;
app.DisplayAlerts = false;
//filename is C:\Users\29561\Desktop\AccmulateInfoTool\AccmulateInfoTool\bin\Debug\2018春季信息\原始邮件下载\人员信息模板.xlsx
curWB = app.Application.Workbooks.Open(filename);
//curWB is null now
curSheet = curWB.Worksheets[1];
答案 0 :(得分:0)
以下适用于我,仅使用文件名进行测试,而不是使用中文(?)进行文件夹名称测试。请注意,我设置了CultureInfo,这通常是Excel必需的。我不知道这与它有什么关系......
private void button1_Click(object sender, EventArgs e)
{
System.Globalization.CultureInfo ci = System.Threading.Thread.CurrentThread.CurrentCulture;
Excel.Workbook wb = null;
Excel.Worksheet ws = null;
try
{
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
Excel.Application xlApp = new Excel.Application();
xlApp.Visible = true;
xlApp.UserControl = true;
wb = xlApp.Workbooks.Open("C:\\Test\\人员信息模板.xlsx");
}
catch (Exception ex)
{ MessageBox.Show(ex.Message); }
finally
{
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
ws = null;
wb = null;
xlApp = null;
}
}