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. TCP协议可靠性数据传输实现原理分析

    http://blog.csdn.net/chexlong/article/details/6123087 TCP 协议是一种面向连接的,为不同主机进程间提供可靠数据传输的协议.TCP 协议假定其所使 ...

  2. linux xxd 命令

    http://www.cnblogs.com/openix/archive/2012/04/23/2466320.html xxd -i dht.jpg dht.h

  3. 【转】linux C++ 获取文件信息 stat函数详解

    stat函数讲解 表头文件:    #include <sys/stat.h>             #include <unistd.h>定义函数:    int stat ...

  4. Mac与Linux的一个巨大不同

    就是Mac仍处在桌面市场的商业圈里,尽管它的市场很小,但是正版率却很高,而且还有专门的Mac Store提供付费下载. Linux在桌面市场几乎没有份额,也不会有人会去买它的应用软件,基本上只存在于服 ...

  5. BCB6编译LUA5.15成功!

    由于想要在一个原生应用里提供脚本功能,而Python的发布不能不说是一件麻烦事.因为所需要的脚本功能很简单,所以决定试试传说中的Lua. 第一步,下载源码.虽然Lua有提供二进制版本下载,但是因为我是 ...

  6. Android:实现无标题的两种方法

    实现无标题的两种方法:配置xml文件和编写代码设置 1.在AndroidManifest.xml文件中进行配置 实现全屏效果: android:theme="@android:style/T ...

  7. P55、面试题6:重建二叉树

    题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字,例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2, ...

  8. allegro飞线隐藏

    这些都是最基本的操作,你说的应该是飞线的显示和隐藏,命令在display下面,display>show rats>net(component/all) display>blank r ...

  9. python中os模块path.abspath()返回的并不是绝对值,而是个错误的不存在的拼接地址

    附截图: 当前路径:  a=r'D:\PCsync\python\commands'  为绝对路径 遍历出来的4条应该是D:\PCsync\python\commands\commands.py... ...

  10. PHP如何大幅度提升运行效率? -- 把它编译成机器码!

      书接上回   今天讨论如何大幅度提升PHP的运行效率. 在这,我们不纠结神马单双引号.全局变量.OO.require_once.错误抑制.... 在这,我们也不讨论APC.opcache.XCac ...