1、将sql数据库表中的数据导入到Excel表格里:

方法一、使用StreamWrite对象,这里要注意的是

用“\t”换列,StreamWrite对象的WriteLine方法 一行一行写入。

public static void ImportExcel()
{
DataAccess services = new DataAccess();
string sql = @"SELECT [Id]
,[Name]
,[Age]
,[Sex]
FROM [StudentManager].[dbo].[Student]";

DataTable dt = services.ExeDataTable(sql, CommandType.Text);
if (dt != null && dt.Rows.Count > 0)
{

using (StreamWriter sw = new StreamWriter(@"D:\123\test.xls", false, Encoding.UTF8))
{
string head = String.Empty;
foreach (var c in dt.Columns)
{
head += c.ToString() + "\t";
}
sw.WriteLine(head);

foreach (DataRow row in dt.Rows)
{
sw.WriteLine(row["Id"] + "\t" + row["Name"] + "\t" + row["Age"] + "\t" + row["Sex"]);
}
}
}

}

方法二、使用第三方类库:

需要引入:AppLibrary.dll和Interop.Excel.dll(Com组件)两个dll

C#读取Excel 几种方法的体会

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Collections.Generic;
using AppLibrary.WriteExcel;
using Excel; /// <summary>
///ExcelHelp 的摘要说明
/// </summary>
public class ExcelHelp
{
public ExcelHelp()
{
//
//TODO: 在此处添加构造函数逻辑
//
} /**/
/// <summary>
/// ASP.NET,分Sheet导出Excel文件
/// </summary>
/// <param name="dv">用于导出的DataView</param>
/// <param name="tmpExpDir">导出的文件夹,例如~/ExcelDownload/</param>
/// <param name="refFileName">文件名,例如test.xls</param>
/// <param name="sheetName">Sheet的名称,如果导出多个Sheet,会自动在名称后面加1、2、3</param>
/// <param name="sheetSize">每个Sheet包含的数据行数,此数值不包括标题行。所以,对于65536行数据,请将此值设置为65535</param>
/// <param name="setBorderLine">导出完成后,是否给数据加上边框线</param>
public static void WebExportToExcel(DataView dv, string tmpExpDir, string refFileName, string sheetName, int sheetSize, bool setBorderLine)
{
//设置多少行为一个Sheet
int RowsToDivideSheet = sheetSize;
//计算Sheet数
int sheetCount = (dv.Table.Rows.Count - ) / RowsToDivideSheet + ; GC.Collect();
Application excel;
_Workbook xBk;
_Worksheet xSt = null;
excel = new Application();
xBk = excel.Workbooks.Add(true); //申明循环中要使用的变量
int dvRowStart;
int dvRowEnd;
int rowIndex = ;
int colIndex = ; //对全部Sheet进行操作
for (int sheetIndex = ; sheetIndex < sheetCount; sheetIndex++)
{
//初始化Sheet中的变量
rowIndex = ;
colIndex = ;
//计算起始行
dvRowStart = sheetIndex * RowsToDivideSheet;
dvRowEnd = dvRowStart + RowsToDivideSheet - ;
if (dvRowEnd > dv.Table.Rows.Count - )
{
dvRowEnd = dv.Table.Rows.Count - ;
} //创建一个Sheet
if (null == xSt)
{
xSt = (_Worksheet)xBk.Worksheets.Add(Type.Missing, Type.Missing, , Type.Missing);
}
else
{
xSt = (_Worksheet)xBk.Worksheets.Add(Type.Missing, xSt, , Type.Missing);
} //设置SheetName
xSt.Name = sheetName;
if (sheetCount > )
{
xSt.Name += ((int)(sheetIndex + )).ToString();
} //取得标题
foreach (DataColumn col in dv.Table.Columns)
{
//设置标题格式
xSt.get_Range(excel.Cells[rowIndex, colIndex], excel.Cells[rowIndex, colIndex]).HorizontalAlignment = XlVAlign.xlVAlignCenter; //设置标题居中对齐
xSt.get_Range(excel.Cells[rowIndex, colIndex], excel.Cells[rowIndex, colIndex]).Font.Bold = true;
//填值,并进行下一列
excel.Cells[rowIndex, colIndex++] = col.ColumnName;
} //取得表格中数量
int drvIndex;
for (drvIndex = dvRowStart; drvIndex <= dvRowEnd; drvIndex++)
{
DataRowView row = dv[drvIndex];
//新起一行,当前单元格移至行首
rowIndex++;
colIndex = ;
foreach (DataColumn col in dv.Table.Columns)
{ if (col.DataType == System.Type.GetType("System.DateTime"))
{
//excel.Cells[rowIndex, colIndex] = (Convert.ToDateTime(row[col.ColumnName].ToString())).ToString("yyyy-MM-dd");
excel.Cells[rowIndex, colIndex] = row[col.ColumnName].ToString();
}
else if (col.DataType == System.Type.GetType("System.String"))
{
excel.Cells[rowIndex, colIndex] = "'" + row[col.ColumnName].ToString();
}
else
{
excel.Cells[rowIndex, colIndex] = row[col.ColumnName].ToString();
}
colIndex++; }
}
//使用最佳宽度
Range allDataWithTitleRange = xSt.get_Range(excel.Cells[, ], excel.Cells[rowIndex, colIndex - ]);
allDataWithTitleRange.Select();
allDataWithTitleRange.Columns.AutoFit();
//xSt.get_Range(excel.Cells[1, 1], excel.Cells[rowIndex, colIndex-1]).Columns.AutoFit();
if (setBorderLine)
{
allDataWithTitleRange.Borders.LineStyle = ;
}
} //G:\LANSUN\Web\AdminUser\SysManager\100
//excel.Visible = true;
string absFileName = HttpContext.Current.Server.MapPath(System.IO.Path.Combine(tmpExpDir, refFileName));
xBk.SaveCopyAs(absFileName); xBk.Close(false, null, null); excel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(xBk);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xSt); xBk = null;
excel = null;
xSt = null;
GC.Collect();
} /// <summary>
/// 导出Excel
/// </summary>
/// <param name="dv"></param>
/// <param name="SheetRows"></param>
/// <param name="Columns"></param>
/// <param name="ColumnName"></param>
/// <param name="ExportNo"></param>
public static void ToExcel(DataView dv, int SheetRows, string ExportNo, HttpResponse response)
{
//GC.Collect();
AppLibrary.WriteExcel.XlsDocument doc = new AppLibrary.WriteExcel.XlsDocument(); doc.FileName = ExportNo + ".xls";
string SheetName = string.Empty;
//记录条数
int mCount = dv.Count; //每个SHEET的数量
int inv = SheetRows;
//计算当前多少个SHEET
int k = Convert.ToInt32(Math.Round(Convert.ToDouble(mCount / inv))) + ; for (int i = ; i < k; i++)
{
SheetName = "数据表" + i.ToString();
AppLibrary.WriteExcel.Worksheet sheet = doc.Workbook.Worksheets.Add(SheetName);
AppLibrary.WriteExcel.Cells cells = sheet.Cells; //创建列样式创建列时引用
XF cellXF = doc.NewXF();
cellXF.VerticalAlignment = VerticalAlignments.Centered;
cellXF.HorizontalAlignment = HorizontalAlignments.Centered;
cellXF.Font.FontFamily = FontFamilies.Roman;//设置字体 默认为宋体
for (int ColIndex = ; ColIndex < dv.Table.Columns.Count; ColIndex++)
{
//第一行表头
cells.Add(, ColIndex + , dv.Table.Columns[ColIndex].Caption, cellXF);
}
//for (int ColIndex = 0; ColIndex < Columns.Count; ColIndex++)
//{
// //第一行表头
// cells.Add(1, ColIndex + 1, Columns[ColIndex].ToString(), cellXF);
//}
int f = ;
for (int m = i * inv; m < mCount && m < (i + ) * inv; m++)
{
f++;
//循环主体内容
//for (int CellIndex = 0; CellIndex < ColumnName.Count; CellIndex++)
//{
// cells.Add(f, CellIndex + 1, dv.Table.Rows[m][ColumnName[CellIndex].ToString()].ToString(), cellXF);
//}
for (int CellIndex = ; CellIndex < dv.Table.Columns.Count; CellIndex++)
{
cells.Add(f, CellIndex + , dv.Table.Rows[m][dv.Table.Columns[CellIndex].ColumnName] is DBNull ? "" : dv.Table.Rows[m][dv.Table.Columns[CellIndex].ColumnName], cellXF);
}
}
}
//添加合计
//AppLibrary.WriteExcel.Worksheet sheetq = doc.Workbook.Worksheets.Add("合计");
//AppLibrary.WriteExcel.Cells cellsq = sheetq.Cells;
//cellsq.Add(1, 1, "合计数据条数");
//cellsq.Add(1, 2, mCount);
//
doc.Send();
response.Flush();
response.End();
} public static void ToSeveralExcel(DataSet ds, string ExportNo, HttpResponse response, string[] sheetNames, int eachSheetCount)
{
//GC.Collect();
AppLibrary.WriteExcel.XlsDocument doc = new AppLibrary.WriteExcel.XlsDocument(); doc.FileName = ExportNo + ".xls";
string SheetName = string.Empty;
//记录条数
int mCount = ds.Tables[].Rows.Count; for (int i = ; i < sheetNames.Length; i++)
{
SheetName = sheetNames[i];
AppLibrary.WriteExcel.Worksheet sheet = doc.Workbook.Worksheets.Add(SheetName);
AppLibrary.WriteExcel.Cells cells = sheet.Cells; //创建列样式创建列时引用
XF cellXF = doc.NewXF();
cellXF.VerticalAlignment = VerticalAlignments.Centered;
cellXF.HorizontalAlignment = HorizontalAlignments.Centered;
cellXF.Font.FontFamily = FontFamilies.Roman;//设置字体 默认为宋体
for (int ColIndex = ; ColIndex < ds.Tables[].Columns.Count; ColIndex++)
{
//第一行表头
cells.Add(, ColIndex + , ds.Tables[].Columns[ColIndex].Caption, cellXF);
} int f = ;
var thisSheetCount = i == ? eachSheetCount : (mCount - i * eachSheetCount);
for (int m = ; m < thisSheetCount; m++)
{
f++;
var thisrowCount = (i * eachSheetCount) + m;
for (int CellIndex = ; CellIndex < ds.Tables[].Columns.Count; CellIndex++)
{
cells.Add(f, CellIndex + , ds.Tables[].Rows[thisrowCount][ds.Tables[].Columns[CellIndex].ColumnName].ToString(), cellXF);
}
}
} doc.Send();
response.Flush();
response.End();
} #region 读写Excel
/// <summary>
/// 读取Excel数据
/// </summary>
/// <param name="FileName"></param>
public static void Read(string FileName)
{
AppLibrary.ReadExcel.Workbook workbook = null;
workbook = AppLibrary.ReadExcel.Workbook.getWorkbook(FileName);
int k = ;
System.Text.StringBuilder sb = new System.Text.StringBuilder();
foreach (AppLibrary.ReadExcel.Sheet sheet in workbook.Sheets)
{
k++;
sb.Append("当前为第" + k + "个Sheet<br/><br/>");
sb.Append("<table class='scroll' cellpadding=0 cellspacing=0>");
for (int iRow = ; iRow < sheet.Rows; iRow++)
{
sb.Append("<tr>");
sb.Append("<td>");
sb.Append("当前为第" + (iRow + ) + "行");
sb.Append("</td>");
for (int iCol = ; iCol < sheet.Columns; iCol++)
{
AppLibrary.ReadExcel.Cell cell = sheet.getCell(iCol, iRow);
object val = cell.Value; string cellValue = (val != null) ? val.ToString() : ""; sb.Append("<td>");
sb.Append(cellValue);
sb.Append("</td>"); }
sb.Append("</tr>");
}
sb.Append("</table><br/><br/>");
}
HttpContext.Current.Response.Write(sb.ToString()); } /// <summary>
///
/// </summary>
/// <param name="ds">DataSet对象</param>
/// <param name="ExportNo">保存的Excel文件名</param>
/// <param name="response">当前的HttpResponse对象</param>
/// <param name="sheetNames">Excel表格名 和 DadaSet对象中的表个数一一对应</param>
public static void ToExcel(DataSet ds, string ExportNo, HttpResponseBase response, string[] sheetNames)
{
//GC.Collect();
AppLibrary.WriteExcel.XlsDocument doc = new AppLibrary.WriteExcel.XlsDocument(); doc.FileName = ExportNo + ".xls";
string SheetName = string.Empty;
int mCount = ; for (int i = ; i < sheetNames.Length; i++)
{
SheetName = sheetNames[i];
//记录条数
mCount = ds.Tables[].Rows.Count;
AppLibrary.WriteExcel.Worksheet sheet = doc.Workbook.Worksheets.Add(SheetName);
AppLibrary.WriteExcel.Cells cells = sheet.Cells; //创建列样式创建列时引用
XF cellXF = doc.NewXF();
cellXF.VerticalAlignment = VerticalAlignments.Centered;
cellXF.HorizontalAlignment = HorizontalAlignments.Centered;
cellXF.Font.FontFamily = FontFamilies.Roman;//设置字体 默认为宋体
for (int ColIndex = ; ColIndex < ds.Tables[i].Columns.Count; ColIndex++)
{
//第一行表头
cells.Add(, ColIndex + , ds.Tables[i].Columns[ColIndex].Caption, cellXF);
} int f = ;
for (int m = ; m < mCount; m++)
{
f++; for (int CellIndex = ; CellIndex < ds.Tables[i].Columns.Count; CellIndex++)
{
cells.Add(f, CellIndex + , ds.Tables[i].Rows[m][ds.Tables[i].Columns[CellIndex].ColumnName].ToString(), cellXF);
}
}
} doc.Send();
response.Flush();
response.End();
} #endregion
}

Excel数据导入导出的更多相关文章

  1. ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例

    这篇文章主要介绍了ThinkPHP使用PHPExcel实现Excel数据导入导出,非常实用的功能,需要的朋友可以参考下 本文所述实例是使用在Thinkphp的开发框架上,要是使用在其他框架也是同样的方 ...

  2. Access中一句查询代码实现Excel数据导入导出

    摘 要:用一句查询代码,写到vba中实现Excel数据导入导出,也可把引号中的SQL语句直接放到查询分析器中执行正 文: 导入数据(导入数据时第一行必须是字段名): DoCmd.RunSQL &quo ...

  3. OpenXml Excel数据导入导出(含图片的导入导出)

    声明:里面的很多东西是基于前人的基础上实现的,具体是哪些人 俺忘了,我做了一些整合和加工 这个项目居于openxml做Excel的导入导出,可以用OpenXml读取Excel中的图片 和OpenXml ...

  4. QC学习三:Excel数据导入导出QC操作流程

    环境: QC9 WindowsXP Office2007   1. 准备 1.通过Excel导入QC,需要下载Microsoft Excel Add-in: http://update.externa ...

  5. 1、数据库与excel表格的数据导入导出

    1.居民用户界面中,excel数据导入导出: 2.其他5张表数据显示到本角色主页的container容器中.

  6. C# excel文件导入导出

    欢迎关注微信公众号 C#编程大全 这里有更多入门级实例帮你快速成长 在C#交流群里,看到很多小伙伴在excel数据导入导出到C#界面上存在疑惑,所以今天专门做了这个主题,希望大家有所收获! 环境:wi ...

  7. SQL SERVER 与ACCESS、EXCEL的数据导入导出转换

    * 说明:复制表(只复制结构,源表名:a 新表名:b)      select * into b from a where 1<>1 * 说明:拷贝表(拷贝数据,源表名:a 目标表名:b) ...

  8. 使用pentaho工具将数据库数据导入导出为Excel

    写在前面:本篇博客讲述的是如何使用pentaho工具快速的将数据库数据导出为Excel文件,以及如何将Excel文件数据导入数据库. 补充:使用此工具并不需要任何一句代码并能快速便捷解决实际问题,此工 ...

  9. NodeJs之EXCEL文件导入导出MongoDB数据库数据

    NodeJs之EXCEL文件导入导出MongoDB数据库数据 一,介绍与需求 1.1,介绍 (1),node-xlsx : 基于Node.js解析excel文件数据及生成excel文件. (2),ex ...

随机推荐

  1. Struts-2.3.24.1官方例子-struts2-blank

    一.配置文件 1.web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app id=&qu ...

  2. 12232 - Exclusive-OR

    12232 - Exclusive-OR 题目大意是可以设定一个点Xp=v,或者Xp^Xq=v,然后查询Xa^Xb^Xc...等于多少. 由于异或操作跟判连通性很类似,这里可以使用并查集来解决,对于X ...

  3. tcp断开的4次挥手

    http://blog.csdn.net/fw0124/article/details/7452695 由于TCP连 接是全双工的,因此每个方向都必须单独进行关闭.这原则是当一方完成它的数据发送任务后 ...

  4. naotu.baidu.com 非常棒的脑图在线工具

    1.png 2.txt 短租 前台功能 房源查看 房源搜索 城市房源 注册登录 预定房源 房源退订 在线支付 评价房源 个人中心 我的订单 我的账户 我的收藏 消息通知 管理员后台 房源发布 会员管理 ...

  5. JSON 之JAVA 解析

    一.   JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧. Json建构于两种结构:     1.“名称/值”对的集合(A collection ...

  6. Codeforces Round #228 (Div. 2) C. Fox and Box Accumulation(贪心)

    题目:http://codeforces.com/contest/389/problem/C 题意:给n个箱子,给n个箱子所能承受的重量,每个箱子的重量为1: 很简单的贪心,比赛的时候没想出来.... ...

  7. Oracle排序BUG

    在今天项目开发中,遇到一个奇怪的问题,运用Oracle自身排序,然后将排序结果进行分页展示到前台时,发现数据有重复的现象. 这是数据表需要排序的全部结果,执行脚本:select * from ajb ...

  8. hdu 2639 Bone Collector II

    Bone Collector II Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  9. tomcat+dbcp+jndi 配置

    1)添加jar包 tomcat6中 TOMCAT_HOME/lib 下是公用jar包 dbcp需要3个jar包:Jakarta-Commons DBCP,Jakarta-Commons Collect ...

  10. SharePoint 2010 master page 控件介绍(5):其他

    转:http://blog.csdn.net/lgm97/article/details/6409227 <!-- 处理搜索按下"enter"键和点击后退按钮 --> ...