在做数据导出到excel时(c#),在本机上能导出表格,但是移到服务器上就没有反应?

在做数据导出到excel时(c#),在本机上能导出表格,但是移到服务器上就没有反应?,第1张

建议换用三方组件NPOI。

你现在导出的Excel是调用系统安装的Excel的组件。倘若服务器上没有安装Excel或安装的Excel版本不对,都会导致导出失败。

再者,你放到服务器上,导出Excel后需要解决杀进程的问题,因为每次导出Excel时候,都会启动一个Excelexe进程,导出结束后该进程不能自动关闭,需要写代码杀掉它,很麻烦。如果你做的是WebForm,还要解决调用安全问题。

所以,我建议用三方组件NPOI来实现导出Excel,它的优点是不需要考虑上面说的问题,且导出速度快。

NPOI的使用需要另行百度。

之前做过一次,在网上找到的人家的源码,自己加强了一下健壮性,你试试看能不能用。下面的是后台的逻辑代码!没有分层,所有代码是混在一块的

using System;

using SystemConfiguration;

using SystemData;

using SystemWeb;

using SystemWebSecurity;

using SystemWebUI;

using SystemWebUIHtmlControls;

using SystemWebUIWebControls;

using SystemWebUIWebControlsWebParts;

using SystemDataOleDb;

using SystemDataSqlClient;

public partial class ImportSCI : SystemWebUIPage

{

protected void Page_Load(object sender, EventArgs e)

{

}

protected void btnUpload_Click(object sender, EventArgs e)

{

//确保已经选择了待导入的文件,首先上传,然后在服务器端完成导入

if (thisfuOpenPostedFileFileName != "")

{

//确保文件是excel格式

//ResponseWrite(thisfuOpenFileNameSubstring(thisfuOpenFileNameLastIndexOf('')));

if (thisfuOpenFileNameSubstring(thisfuOpenFileNameLastIndexOf('') + 1) == "xls")

{

Random rd = new Random(1);

string filename = DateTimeNowDateToString("yyyymmdd") + DateTimeNowToLongTimeString()Replace(":", "") + rdNext(9999)ToString() + "xls";

try

{

thisfuOpenPostedFileSaveAs(@ServerMapPath("fileupload/") + filename);

}

catch (HttpException he)

{

ResponseWrite("文件上传不成功,请检查文件是否过大,是否有写权限!");

return;

}

#region --------读取文件内容到服务器内存----------

string conn = " Provider = MicrosoftJetOLEDB40 ; Data Source =" + ServerMapPath("fileupload") + "/" + filename + ";Extended Properties=Excel 80";

OleDbConnection thisconnection = new OleDbConnection(conn);

thisconnectionOpen();

//要保证字段名和excel表中的字段名相同

string Sql = "select from [Sheet1$]";

OleDbDataAdapter mycommand = new OleDbDataAdapter(Sql, thisconnection);

DataSet ds = new DataSet();

mycommandFill(ds, "[Sheet1$]");

thisconnectionClose();

thisGridView1DataSource = ds;

thisGridView1DataBind();

#endregion

#region --------插入到数据库中---------

string conn1 = "Server=(local);database=QK;Uid=sa1;Pwd=1234";

SqlConnection thisconnection1 = new SqlConnection(conn1);

thisconnection1Open();

int count = dsTables["[Sheet1$]"]RowsCount;

for (int i = 0; i < count; i++)

{

string ID,TITLE, ISSN, ei, DL, XL;

ID = dsTables["[Sheet1$]"]Rows[i]["ID"]ToString();

TITLE = dsTables["[Sheet1$]"]Rows[i]["TITLE"]ToString();

ISSN = dsTables["[Sheet1$]"]Rows[i]["ISSN"]ToString();

ei = dsTables["[Sheet1$]"]Rows[i]["e"]ToString();

DL = dsTables["[Sheet1$]"]Rows[i]["DL"]ToString();

//XL = dsTables["[Sheet1$]"]Rows[i]["XL"]ToString();

//string excelsql = "insert into SCI(ID, TITLE, ISSN, e, DL, XL) values ('" + ID + "','" + TITLE + "','" + ISSN + "','" + ei + "','"+DL+"','"+XL+"') ";

string excelsql = "insert into SCI(ID, TITLE, ISSN, e, DL) values ('" + ID + "','" + TITLE + "','" + ISSN + "','" + ei + "','" + DL + "'"+") ";

SqlCommand mycommand1 = new SqlCommand(excelsql, thisconnection1);

try

{

mycommand1ExecuteNonQuery();

}

catch (SqlException ode)

{

//ResponseWrite("<b>导入过程出现异常,请检查是否需要重新导入!</b>");

ResponseWrite(odeMessageToString());

return;

}

}

ResponseWrite("更新成功");

thisconnection1Close();

#endregion

}

else

{

ResponseWrite("导入文件的格式不正确!");

}

}

else

{

ResponseWrite("您还没有选择要导入的文件!");

}

}

}

工具-共享工作薄 在excel中,多人同时加工一个工作薄(excel共享) 一、设置共享工作簿 我们可以先举个例子:假设有甲乙丙丁四个用户分工合作共同完成录入操作,四人分别在001、002、003、004号机器上同时操作,这四台机器都已经与000号电脑通过

SpreadJS由于是一款纯前端的控件,默认支持的是纯前端的导入导出。

如果要导出到服务器端需要将前端生成的blob对象通过ajax或者form表单提交的方式传递到后台,后台接收到后转存为xlsx格式的Excel文件即可。

详细可以参考下面链接的文章

网页链接

这需要你在程序里面设置,把他设置成只要有人运行程序时就自动去找表格才行,如果说单一的共享表格,那太简单了。只要你把表格放在你的共享文件夹进而面,或者你把表格所在的文件夹右键属性-共享就可以了。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 在做数据导出到excel时(c#),在本机上能导出表格,但是移到服务器上就没有反应?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情