本文介绍了使用C#编写到现有的Excel文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图打开(或创建一个新XLS)Excel文件和写一些值吧。虽然下面的程序工作得很好,如果我只需创建一个新的xls文件,我遇到行的一些问题。



  ** mWorkBook = oXL.Workbooks.Open(路径,0,假,5,,,假Microsoft.Office.Interop.Excel.XlPlatform.xlWindows,,真,假0,真的,假的,假的); ** 

下面的错误:
'LOG.xls'不能被访问。该文件可能已损坏,位于不响应的服务器上,或只读。
它不是只读的,它的损坏(因为是在运行时创建的某个文件)。 ?
有什么问题再

 私有静态Microsoft.Office.Interop.Excel.Workbook mWorkBook; 
私有静态Microsoft.Office.Interop.Excel.Sheets mWorkSheets;
私有静态Microsoft.Office.Interop.Excel.Worksheet mWSheet1;
私有静态Microsoft.Office.Interop.Excel.Application OXL;

私人无效btnSignIn_Click(对象发件人,EventArgs五)
{

路径字符串=D:\\LOG.xls (!File.Exists(路径))
如果
{
File.Create(路径);
}


OXL =新Microsoft.Office.Interop.Excel.Application();
oXL.Visible = TRUE;
oXL.DisplayAlerts = FALSE;
//在这一行
mWorkBook = oXL.Workbooks.Open错误(路径,0,假,5,,假的,Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, 真,假0,真的,假的,假的);

//获取工作簿中的
mWorkSheets = mWorkBook.Worksheets所有表;

//获取媒体链接存在表
mWSheet1 =(Microsoft.Office.Interop.Excel.Worksheet)mWorkSheets.get_Item(工作表Sheet1);

Microsoft.Office.Interop.Excel.Range范围= mWSheet1.UsedRange;

INT colCount = range.Columns.Count;
INT rowCount等= range.Rows.Count;

为(INT指数= 1;指数< 15;指数++)
{
mWSheet1.Cells [rowCount等指数+ 1] = rowCount时+指数;
mWSheet1.Cells [rowCount等+指数,2] =新项+指数;
}

mWorkBook.SaveAs(路径,Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal,
Missing.Value,Missing.Value,Missing.Value,Missing.Value ,Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive,
Missing.Value,Missing.Value,Missing.Value,
Missing.Value,Missing.Value);

mWorkBook.Close(Missing.Value,Missing.Value,Missing.Value);
mWSheet1 = NULL;

mWorkBook = NULL;

oXL.Quit();
GC.WaitForPendingFinalizers();
GC.Collect的();
GC.WaitForPendingFinalizers();
GC.Collect的();
}


解决方案

使用的 File.Create 是不恰当的在这里。它返回一个(空白)的FileStream ,而不是一个Excel文件(定义以.xls的路径不会创建一个Excel文件... )。



和你不关闭和处置它,你有一个例外,当你试图打开它,因为它已经在使用(你将在任何异常即使这样,你放开它,因为您还没有建立在这个阶段的Excel文件)。



所以,如果工作簿中存在,可以通过使用 oXL.Workbooks.Open 打开。
如果工作簿不存在,使用来创建它: oXL.Workbooks.Add(),然后调用 mWorkBook.SaveAs(...)方法来真正创造它。

  OXL =新Microsoft.Office.Interop.Excel.Application(); 
oXL.Visible = TRUE;
oXL.DisplayAlerts = FALSE;

路径字符串=D:\\LOG.xls
如果
{
mWorkBook = oXL.Workbooks.Add(File.Exists(路径)!);
}
,否则
{
mWorkBook = oXL.Workbooks.Open(路径,0,假,5,,假的,的Microsoft.Office.Interop.Excel .XlPlatform.xlWindows,真,
假,0,真的,假的,假的);
}



(望VB => C#是正确的!)



而在你的方法,您必须设置正确的 FILEFORMAT Excel文件(重新设置的.xls路径是不够的......)



Hope this helps.

这篇关于使用C#编写到现有的Excel文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-23 21:55