c#.net 中 如何将gridview中的数据导出到excel中? 网上的好多办法是将HTML以Excel格式输出,但是导入的时
展开全部
这涉及到一个标准EXCEL格式的问题。
通常基于WEB的开发为了方便 大家都采用直接将表格内容导出为EXCLE格式。
而导入的时候我们会发现基于EXCEL的OLEDB数据连接对这种格式的EXCEL格式是不支持的。
为了解决以上问题。我开发中有几个办法。
1:需要导入的EXCEL采用引用EXCEL类的方法输出。
这种方法保证了EXCEL输出的标准格式。但是需要服务器安装EXCEL 且容易造成进程锁死,给系统稳定性造成影响。
2:将导出的EXCEL另存为一次。这种方法固然好使,但是是不是能接受每次都另存为是个问题。
3:采用第三方控件导出。目前我接触的第三方控件是 Myxls 你可以google下 这个控件使用起来跟调用EXCEL差不多。可以生成标准XLS文件。但是对样式支持不是太好。
希望对你有帮助
通常基于WEB的开发为了方便 大家都采用直接将表格内容导出为EXCLE格式。
而导入的时候我们会发现基于EXCEL的OLEDB数据连接对这种格式的EXCEL格式是不支持的。
为了解决以上问题。我开发中有几个办法。
1:需要导入的EXCEL采用引用EXCEL类的方法输出。
这种方法保证了EXCEL输出的标准格式。但是需要服务器安装EXCEL 且容易造成进程锁死,给系统稳定性造成影响。
2:将导出的EXCEL另存为一次。这种方法固然好使,但是是不是能接受每次都另存为是个问题。
3:采用第三方控件导出。目前我接触的第三方控件是 Myxls 你可以google下 这个控件使用起来跟调用EXCEL差不多。可以生成标准XLS文件。但是对样式支持不是太好。
希望对你有帮助
展开全部
用
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.ApplicationClass();
这个组件将数据在服务上生成一个真正的excel文件供用户下载即可,如果没有用过上面这个组件我有详细代码!
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.ApplicationClass();
这个组件将数据在服务上生成一个真正的excel文件供用户下载即可,如果没有用过上面这个组件我有详细代码!
追问
真的没有用过 太感谢你了 你是做过这样的例子吗? 希望给我发一份 好人啊
我的QQ:237612252
追答
代码已发送到你的QQ邮箱
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在Bin中导入ExcelLibrary.dll
引入using ExcelLibrary.SpreadSheet;
代码如下:
protected void btnExcel_Click(object sender, EventArgs e)
{
FileUpload upload = new FileUpload();
this.gvStatistics.AllowPaging = false;//先取消分页,以便能将所有数据导出。
this.gvStatistics.DataBind();//再重新绑定一次数据
int rows = this.gvStatistics.Rows.Count;//行数
int columns = this.gvStatistics.Columns.Count;//列数
int pages = this.gvStatistics.PageCount;//页数
Workbook book = new Workbook();
Worksheet sheet = new Worksheet("sheet1");
string value = "";
for (int r = 0; r < rows; r++)
{
for (int c = 0; c < columns; c++)
{
value = this.gvStatistics.Rows[r].Cells[c].Text;
sheet.Cells[r, c] = new Cell(value);
}
}
book.Worksheets.Add(sheet);
book.Save(@"D:\名字.xls");
this.gvStatistics.AllowPaging = true;//导出后分页。
this.gvStatistics.DataBind();//再重新绑定一次数据
}
引入using ExcelLibrary.SpreadSheet;
代码如下:
protected void btnExcel_Click(object sender, EventArgs e)
{
FileUpload upload = new FileUpload();
this.gvStatistics.AllowPaging = false;//先取消分页,以便能将所有数据导出。
this.gvStatistics.DataBind();//再重新绑定一次数据
int rows = this.gvStatistics.Rows.Count;//行数
int columns = this.gvStatistics.Columns.Count;//列数
int pages = this.gvStatistics.PageCount;//页数
Workbook book = new Workbook();
Worksheet sheet = new Worksheet("sheet1");
string value = "";
for (int r = 0; r < rows; r++)
{
for (int c = 0; c < columns; c++)
{
value = this.gvStatistics.Rows[r].Cells[c].Text;
sheet.Cells[r, c] = new Cell(value);
}
}
book.Worksheets.Add(sheet);
book.Save(@"D:\名字.xls");
this.gvStatistics.AllowPaging = true;//导出后分页。
this.gvStatistics.DataBind();//再重新绑定一次数据
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-05-05
展开全部
可以将整个gridview放在某个层里,直接复制出来,不过这样导出来的不好看.
至于导回来的话,
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath+ ";Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn .Open();
/*工作表的判断
DataTable sheetNames = conn .GetOleDbSchemaTable
(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] );
*/
OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + sheetname + "]", conn);
conn .Close();
Datatable db=new Datatable ();
oada .Fill(db);
有个Datatable 了,绑定也就好绑定了
另外,站长团上有产品团购,便宜有保证
至于导回来的话,
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath+ ";Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn .Open();
/*工作表的判断
DataTable sheetNames = conn .GetOleDbSchemaTable
(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] );
*/
OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + sheetname + "]", conn);
conn .Close();
Datatable db=new Datatable ();
oada .Fill(db);
有个Datatable 了,绑定也就好绑定了
另外,站长团上有产品团购,便宜有保证
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用DataTable的方式导出
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询