永发信息网

我用visual C#.NET打开一个excel,它显示为可读文件,如何使打开的文件为可读写??就是普通的模式。

答案:3  悬赏:30  手机版
解决时间 2021-03-23 13:31
我用visual C#.NET打开一个excel,它显示为可读文件,如何使打开的文件为可读写??就是普通的模式。
最佳答案
我也正在做这个, 下面是我写的导入方法,传入路径,返回dataset ,已经实现。希望对你有帮助。

public DataSet ImportExcel(string fileName)
{
//判断是否安装EXCEL
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
if (xlApp == null)
{
Page.ClientScript.RegisterStartupScript(GetType(),"z","");
return null;
}

//判断文件是否被其他进程使用
Microsoft.Office.Interop.Excel.Workbook workbook;
try
{
workbook = xlApp.Workbooks.Open(fileName, 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, 1, 0);
}
catch
{
Page.ClientScript.RegisterStartupScript(GetType(),"z","");
return null;
}

//获得所有Sheet名称
int n = workbook.Worksheets.Count;
string[] SheetSet = new string[n];
System.Collections.ArrayList al = new System.Collections.ArrayList();
for (int i = 1; i <= n; i++)
{
SheetSet[i - 1] = ((Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[i]).Name;
}

//释放Excel相关对象
workbook.Close(null, null, null);
xlApp.Quit();
if (workbook != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
workbook = null;
}
if (xlApp != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
xlApp = null;
}
GC.Collect();

//把EXCEL导入到DataSet
DataSet ds = new DataSet();
string connStr = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + fileName + ";Extended Properties=Excel 8.0";
using (OleDbConnection conn = new OleDbConnection(connStr))
{
conn.Open();
OleDbDataAdapter da;
for (int i = 1; i <= n; i++)
{
string sql = "select * from [" + SheetSet[i - 1] + "$] ";
da = new OleDbDataAdapter(sql, conn);
da.Fill(ds, SheetSet[i - 1]);
da.Dispose();
}

conn.Close();
conn.Dispose();
}
//DataRow[] dr = new DataRow[ds.Tables[0].Rows.Count];

ds.Tables[0].Rows.RemoveAt(ds.Tables[0].Rows.Count - 1);
return ds;
}追问我没有修改代码,可是打开excel莫名其妙的变成了可以编辑的状态,问题似乎解决了。但是现在我要打开word,word又变成了只读文档,如果你知道解决办法请告诉我,谢谢了。
全部回答
推荐NPOI操作excel
Ctrl+Shift+Esc 打开任务管理器,在进程里面找到EXCEL.EXE,把他们全部Kill掉 再走你的程序就没问题了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我想从郑州座车去辉县
爱人第一天上班祝福语,上班又累不上班又烦的
仔细观察下面植物细胞和动物细胞结构图,回答
拳头或者冷兵器怎么打倒地的人
AEG洗衣机是洗、干一起的吗?
学校要粉刷教室,华林服务队准备派出4名粉刷
如图,在?ABCD中,对角线AC、BD相交于点O,E
吃海虾过敏是什么原因
求一句不分手的话,求一句搞笑(恶搞)的句子
电气暖通工程师是做什么的
如何种植绿萝?
凸宴4S概念餐厅这个地址在什么地方,我要处理
怎样接近野猫?
为什么贪官出逃会过得穷困潦倒
魔术空杯变酒是怎么变出来酒的
推荐资讯
2006宝马530蓝牙怎么设置
海尔热水器JSQ16-B(t)为什么停歇后在继续使用
新华书店有历史类书籍吗?武汉哪里有卖这类书
华通塞维丽舍西门在什么地方啊,我要过去处理
【走进名著】阅读下面的文字,完成后面的题目
上联 陶然亭,下联?
包头到连云港多少公里,连云港开车到武汉要多
怎样申请短号
阅读下列古诗,完成后面小题。(4分)金陵驿
假如我是一名部门经理,如果你是一个公司的总
辡木籽吃了对人有哪些好处
在入教师编之前考上的研究生,能不能一边上研
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?