B/S结构生成EXCEL文件时遇到的问题。

sunwave0 2006-10-26 02:51:44
B/S结构问题:
1、我用excel.Workbooks.Open(......)打开一个EXCEL文件,然后立即用workbook.SaveAs(.....)存储成另一个文件名,文件存下了,不过打开文件发现新存的文件里是空数据,而原始文件是有数据的,这是怎么回事情啊?有人能提供关于打开EXCEL文件的代码实例吗?
2、B/S结构中将生成的EXCEL文件存储到客户端,怎么做,做好有人能给个比较完整的代码让我研究下,谢谢了。
3、B/S结构中,用WORKBOOK无法关闭EXCEL线程的问题,希望大家能提供更多的思路。
...全文
256 12 打赏 收藏 举报
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
tmc1703 2007-04-04
  • 打赏
  • 举报
回复
这个问题最大难点在关闭因为读写EXECL而产生的EXECL进程,这个去网上找找相关资料解决好这个这个问题也就解决的比较完善了。
noky 2007-04-04
  • 打赏
  • 举报
回复
更正,我给你的代码是吧DataTable中的数据写入到Excel中
noky 2007-04-04
  • 打赏
  • 举报
回复
对EXCEL的操作我个人认为有两种方式。二楼给的方法是一种(VBA)。但是这种方法回出现你刚才说的问题。写不进去任何数值,或者Excel线程无法关闭等等问题,我也遇到过,这种方法太繁琐了,细到你必须计算每一个cell的宽度等等,个人认为如果没有必要,不要用这种方法,
还有另外一种就是用OLE技术,把Excel当作数据库来处理,用ADO来对Excel进行操作,另外要配合DataSet和DataTable,这样处理起来比较的方便。另外附上从Excel中读取的代码,不全,你自己在研究吧!
mConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=Excel 8.0;";
mConnection = new OleDbConnection(mConnectionString);
mOleDbCommand = new OleDbCommand();
mOleDbCommand.Connection = mConnection;
mOleDbCommand.Connection.Open();

// 创建表
string columnString = "CREATE TABLE Worksheet(";
//这里循环你的DataTabel中的行列,
{
columnString + = dataTable中的行、列的值 + " varchar,";
}
columnString = columnString.TrimEnd(',');
columnString += ")";
mOleDbCommand.CommandText = columnString;
mCellOleDbCommand.ExecuteNonQuery();
代码不全,也不可能给你全的见凉。
Wizard_Joe 2007-04-04
  • 打赏
  • 举报
回复
关注
sunwave0 2006-11-03
  • 打赏
  • 举报
回复
方法试了下,还是没关闭线程。写流的方式我不会用,请给我说的详细点好吗?
mailpq 2006-10-27
  • 打赏
  • 举报
回复
Dim resp As HttpResponse
resp = Page.Response
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312")
resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName)
resp.ContentType = "application/ms-txt"
Dim colHeaders As New String("")
Dim Is_item As New String("")
Dim i As Integer
Dim dt As DataTable
dt = ds.Tables(0)
Dim drs As DataRow()
drs = dt.Select("")
resp.Write("姓名" + vbTab + "学号" + vbCrLf)
Dim dr As DataRow
For Each dr In drs
For i = 0 To (dt.Columns.Count - 1)
Is_item = Is_item + dr(i).ToString + vbTab
Next
Is_item = Is_item + vbCrLf
resp.Write(Is_item)
Is_item = ""
Next
以上是用HttpResponse对象实现的~
sunwave0 2006-10-27
  • 打赏
  • 举报
回复
能给我发一个关于B/S结构中将表中数据生成EXCEL文件,并存储到客户端的程序代码吗?我现在主要不知道的存储到客户端这部分。
yixianggao 2006-10-26
  • 打赏
  • 举报
回复
不知道你的功能需求是啥?

反正之前项目中都不启动 Excel 读取 excel 文件,而是用 oledb 读取,获取 DataSet 或 DataTable。
下载时直接写流,而不在 Server 上保存文件。
tomsoncat 2006-10-26
  • 打赏
  • 举报
回复
帮顶
Knight94 2006-10-26
  • 打赏
  • 举报
回复
to 1

贴出相关操作代码。
Knight94 2006-10-26
  • 打赏
  • 举报
回复
to 3、B/S结构中,用WORKBOOK无法关闭EXCEL线程的问题,希望大家能提供更多的思路。

Sample code as follows:
myApp=new Excel.ApplicationClass();
myApp.Visible = false;
oMissiong = System.Reflection.Missing.Value;
myBooks= myApp.Workbooks;
myBook = myBooks.Open(ExcelFile,oMissiong,oMissiong,oMissiong,oMissiong,oMissiong,oMissiong,oMissiong,oMissiong,oMissiong,oMissiong,oMissiong,oMissiong);
mySheet=(Excel.Worksheet)myBook.Sheets[1];
..........................
.........................
if(myBook != null)
myBook.Close(true, ExcelFile, oMissiong);

// Quit Excel and clean up.
if(mySheet != null)
System.Runtime.InteropServices.Marshal.ReleaseComObject (mySheet);
mySheet = null;
if(myBook != null)
System.Runtime.InteropServices.Marshal.ReleaseComObject (myBook);
myBook = null;
if(myBooks != null)
System.Runtime.InteropServices.Marshal.ReleaseComObject (myBooks);
myBooks = null;
if(myApp != null)
{
myApp.Workbooks.Close();
myApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject (myApp);
myApp = null;
}
GC.Collect();
Knight94 2006-10-26
  • 打赏
  • 举报
回复
to 2、B/S结构中将生成的EXCEL文件存储到客户端,怎么做,做好有人能给个比较完整的代码让我研究下,谢谢了。

Exporting in MS Excel by MS Excel way
http://www.codeproject.com/useritems/ExportInExcelByExcelWay.asp
相关推荐
发帖
C#

10.8w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2006-10-26 02:51
社区公告

让您成为最强悍的C#开发者