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. tortoisesvn › prefer local prefer repository

    tortoisesvn › prefer local prefer repository

  2. 查看32bit的ARM(比如ARMv7)反汇编

    1.使用./arm-eabi-as test.S -o test.o编译 2.使用./arm-eabi-objdump -d test.o反汇编

  3. CentOS7.1 JDK安装 和 CentOS7.1配置yum源

    1.卸载自带OPENJDK #查看自身jdk java -verson #查看自身安装的java  rpm -qa | grep java #显示如下 python-javapackages-3.4. ...

  4. JavaScript DOM高级程序设计 5动态修改样式和层叠样式表1(源代码)--我要坚持到底!

    W3C DOM2样式规范 现在这边贴出本章要的源代码,注意要结合前面用到的ADS库http://vdisk.weibo.com/s/Dq8NU CSSStyleSheet对象属性: type :始终是 ...

  5. C# 字符串加密解密方法

    这个是加密的算法的命名空间,使用加密算法前要引用该程序集  System.Security.Cryptography using System;using System.Data;using Syst ...

  6. [ffmpeg 扩展第三方库编译系列] frei0r mingw32 下编译问题

    在编译安装frei0r的时候遇到两个错误地方, 两个都是在install的时候. 一开始编译都很顺利,输入了 make install之后就走开了,回来一看,报错误. 提示mkdir -p //usr ...

  7. [转] android自动化之MonkeyRunner测试环境配置(一)

    Android自动化测试之MonkeyRunner 一.Android自动化测试之环境搭建 1.1  Android-sdk介绍 ¢ SDK(Software development kit)软件开发 ...

  8. mvn命令

    打包:mvn package 编译:mvn compile 编译测试程序:mvn test-compile 清空:mvn clean 运行测试:mvn test 生成站点目录: mvn site 生成 ...

  9. innodb master主线程

    http://wenku.baidu.com/link?url=MhY9yhHTgeOlyooWDvaVfPkW3cuVSX_rIZv2QtCu7GLeEuqSfYh_M7Yvl1N4IY08a3ws ...

  10. C# Process.Kill() 拒绝访问(Access Denied) 的解决方案

    需求:很多时候我们需要后台运行几个Console来不停的计算数据,那么部署到客户服务器后,如果出现突发异常,程序挂掉了,那...? 解决方案:封装了一个对后台运行程序不停监测的功能,如果发现程序有异常 ...