C# read/write .xlsm 文件
C# read/write .xlsm Files
您好,我尝试使用 Excel 文件和 C#。现在我可以使用 xlsx 文件并可以打开它等等。但是当我将它更改为 xlsm 文件时,我总是会遇到找不到文件的异常,我也不知道为什么。这是我的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
using Excel = Microsoft.Office.Interop.Excel;
using Microsoft.Office.Interop;
using System.Reflection;
using System.Windows.Forms;
using System.Diagnostics;
namespace WorkWithExcel
{
class reportingController
{
public void createExcelFile()
{
Excel.Application oXL = new Excel.Application();
Excel.Workbook oWB = oXL.Workbooks.Add(Missing.Value);
oWB.SaveAs(Application.StartupPath + "\PROJEKTSTATUS_GESAMT_neues_Layout.xlsm", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
oWB.Close(true, Missing.Value, Missing.Value);
}
public void openExcelFile()
{
Excel.Application oXL = new Excel.Application();
Excel.Workbook oWB = oXL.Workbooks.Open(Application.StartupPath + "PROJEKTSTATUS_GESAMT_neues_Layout.xlsm", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
//read Excel sheets
foreach (Excel.Worksheet ws in oWB.Sheets)
{
MessageBox.Show(ws.Name);
}
//save as separate copy
oWB.SaveAs(Application.StartupPath + "\PROJEKTSTATUS_GESAMT_neues_Layout_neu.xlsm", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
oWB.Close(true, Missing.Value, Missing.Value);
}
public void writeExcelFile()
{
Excel.Application oXL = new Excel.Application();
Excel.Workbook oWB = oXL.Workbooks.Open(Application.StartupPath + "\PROJEKTSTATUS_GESAMT_neues_Layout.xlsm", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
Excel.Worksheet oWS = oWB.Worksheets[1] as Excel.Worksheet;
//rename the Sheet name
oWS.Name = "Excel Sheet";
for (int i = 1; i < 10; i++)
{
oWS.Cells[i, 1] = "Cell " + i.ToString();
}
oWB.SaveAs(Application.StartupPath + "\PROJEKTSTATUS_GESAMT_neues_Layout.xlsm", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
Process.Start(Application.StartupPath + "\PROJEKTSTATUS_GESAMT_neues_Layout.xlsm ");
}
public void readExcelFile()
{
Excel.Application oXL = new Excel.Application();
Excel.Workbook oWB = oXL.Workbooks.Open(Application.StartupPath + "\PROJEKTSTATUS_GESAMT_neues_Layout.xlsm", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
Excel.Worksheet oWS = oWB.Worksheets[1] as Excel.Worksheet;
Excel.Range range;
range = oWS.UsedRange;
//read first row, first cell value
MessageBox.Show((string)(range.Cells[1, 1] as Excel.Range).Value2);
}
}
}
这是例外情况:
An exception of type 'System.Runtime.InteropServices.COMException' occurred in WorkWithExcel.exe .
Additional information: ' C : \ Users \ AAN \ Documents \ Visual Studio 2015 \ Projects \ Work With Excel \ Work With Excel \ bin \ DebugPROJEKTSTATUS_GESAMT_neues_Layout.xlsm ' was not found. Check the spelling of the filename , and verify that the file location is correct .
但是文件在那里。
它适用于 .xlsx 文件,但不适用于 xlsm。所以任何帮助都会很棒。所以我尝试 google 和一些博客,但对我没有任何帮助。也许有些东西我不明白....
谢谢你的时间,对不起我的英语。
你的路径需要是
"C : \ Users \ AAN \ Documents \ Visual Studio 2015 \ Projects \ Work With Excel \ Work With Excel \ bin \ Debug \ PROJEKTSTATUS_GESAMT_neues_Layout.xlsm"
而不是
"C : \ Users \ AAN \ Documents \ Visual Studio 2015 \ Projects \ Work With Excel \ Work With Excel \ bin \ DebugPROJEKTSTATUS_GESAMT_neues_Layout.xlsm"
在Debug
之后添加\
修复此行:
Excel.Workbook oWB = oXL.Workbooks.Open(Application.StartupPath + "PROJEKTSTATUS_GESAMT_neues_Layout.xlsm"...
对此:
Excel.Workbook oWB = oXL.Workbooks.Open(Application.StartupPath + "\PROJEKTSTATUS_GESAMT_neues_Layout.xlsm"...
或者更好,使用常量值
您好,我尝试使用 Excel 文件和 C#。现在我可以使用 xlsx 文件并可以打开它等等。但是当我将它更改为 xlsm 文件时,我总是会遇到找不到文件的异常,我也不知道为什么。这是我的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
using Excel = Microsoft.Office.Interop.Excel;
using Microsoft.Office.Interop;
using System.Reflection;
using System.Windows.Forms;
using System.Diagnostics;
namespace WorkWithExcel
{
class reportingController
{
public void createExcelFile()
{
Excel.Application oXL = new Excel.Application();
Excel.Workbook oWB = oXL.Workbooks.Add(Missing.Value);
oWB.SaveAs(Application.StartupPath + "\PROJEKTSTATUS_GESAMT_neues_Layout.xlsm", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
oWB.Close(true, Missing.Value, Missing.Value);
}
public void openExcelFile()
{
Excel.Application oXL = new Excel.Application();
Excel.Workbook oWB = oXL.Workbooks.Open(Application.StartupPath + "PROJEKTSTATUS_GESAMT_neues_Layout.xlsm", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
//read Excel sheets
foreach (Excel.Worksheet ws in oWB.Sheets)
{
MessageBox.Show(ws.Name);
}
//save as separate copy
oWB.SaveAs(Application.StartupPath + "\PROJEKTSTATUS_GESAMT_neues_Layout_neu.xlsm", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
oWB.Close(true, Missing.Value, Missing.Value);
}
public void writeExcelFile()
{
Excel.Application oXL = new Excel.Application();
Excel.Workbook oWB = oXL.Workbooks.Open(Application.StartupPath + "\PROJEKTSTATUS_GESAMT_neues_Layout.xlsm", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
Excel.Worksheet oWS = oWB.Worksheets[1] as Excel.Worksheet;
//rename the Sheet name
oWS.Name = "Excel Sheet";
for (int i = 1; i < 10; i++)
{
oWS.Cells[i, 1] = "Cell " + i.ToString();
}
oWB.SaveAs(Application.StartupPath + "\PROJEKTSTATUS_GESAMT_neues_Layout.xlsm", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
Process.Start(Application.StartupPath + "\PROJEKTSTATUS_GESAMT_neues_Layout.xlsm ");
}
public void readExcelFile()
{
Excel.Application oXL = new Excel.Application();
Excel.Workbook oWB = oXL.Workbooks.Open(Application.StartupPath + "\PROJEKTSTATUS_GESAMT_neues_Layout.xlsm", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
Excel.Worksheet oWS = oWB.Worksheets[1] as Excel.Worksheet;
Excel.Range range;
range = oWS.UsedRange;
//read first row, first cell value
MessageBox.Show((string)(range.Cells[1, 1] as Excel.Range).Value2);
}
}
}
这是例外情况:
An exception of type 'System.Runtime.InteropServices.COMException' occurred in WorkWithExcel.exe .
Additional information: ' C : \ Users \ AAN \ Documents \ Visual Studio 2015 \ Projects \ Work With Excel \ Work With Excel \ bin \ DebugPROJEKTSTATUS_GESAMT_neues_Layout.xlsm ' was not found. Check the spelling of the filename , and verify that the file location is correct .
但是文件在那里。
它适用于 .xlsx 文件,但不适用于 xlsm。所以任何帮助都会很棒。所以我尝试 google 和一些博客,但对我没有任何帮助。也许有些东西我不明白....
谢谢你的时间,对不起我的英语。
你的路径需要是
"C : \ Users \ AAN \ Documents \ Visual Studio 2015 \ Projects \ Work With Excel \ Work With Excel \ bin \ Debug \ PROJEKTSTATUS_GESAMT_neues_Layout.xlsm"
而不是
"C : \ Users \ AAN \ Documents \ Visual Studio 2015 \ Projects \ Work With Excel \ Work With Excel \ bin \ DebugPROJEKTSTATUS_GESAMT_neues_Layout.xlsm"
在Debug
\
修复此行:
Excel.Workbook oWB = oXL.Workbooks.Open(Application.StartupPath + "PROJEKTSTATUS_GESAMT_neues_Layout.xlsm"...
对此:
Excel.Workbook oWB = oXL.Workbooks.Open(Application.StartupPath + "\PROJEKTSTATUS_GESAMT_neues_Layout.xlsm"...
或者更好,使用常量值