如何用asp读取Excel文件(比较全面)

合集下载

.NET读写Excel工具Spire.Xls使用入门教程(1)

.NET读写Excel工具Spire.Xls使用入门教程(1)

.NET读写Excel⼯具Spire.Xls使⽤⼊门教程(1)在.NET平台,操作Excel⽂件是⼀个⾮常常⽤的需求,⽬前⽐较常规的⽅法有以下⼏种:1.Office Com组件的⽅式:这个⽅式⾮常累⼈,微软的东西总是这么的复杂,使⽤起来可能⾮常不便,需要安装Excel,对于服务器,有时候还需要为配置IIS权限。

折腾⼈,看到很多⼈在群⾥⾯使⽤这个东西,出现各种抓狂的错误; 这⾥特别感谢:的回复,⽤⽤powershell + excel 2007的⽅式,他很好的解决问题。

其实我想说的是,Office既然提供了对com组件的⽀持,肯定是各⽅⾯问题都考虑到了,使⽤肯定是没有问题的,只不过学习成本很⼤,每个⼈精⼒,技术能⼒有限,懒得去折腾和再去学习,解决的⽅式肯定都是有的。

⽽纯粹的NPOI,Spire这种操作⽅式可以让更多的开发⼈员快速的掌握,效率提⾼,各有所长吧,看⾃⼰的选择。

另外对于免费版本的限制和收费的问题,这个暂时没有办好,⼤家⼋仙过海各显神通把。

哈哈,你懂的。

2.开源.NET组件NPOI⽅式:这个⽅式应该是很多⼈都在使⽤的,这个开源的组件相⽐第⼀种,虽然稍微简单了点(2003⽀持⽐较好,新版本也⽀持Xlsx),但还是⾮常好⽤的;最近在浏览NPOI的开源⽹站的时候,突然发现Spire居然是NPOI的赞助商。

赞⼀个吧,互相帮助,服务⼤众,不像国内的什么百毒,企鹅,⼀天到晚打架,互抨,还要封杀,真是可怜啊。

看看NPOI的Codeplex⽹站截图: 今天给⼤家介绍的.NET平台操作Excel组件Spire.XLS,应该来说⽐上⾯2种⽅法要更好更稳定,功能也更多,先看看基本介绍:1.Spire.Office for .NET2.Spire.XLS特点 Spire.XLS for .NET ⽀持所有Excel格式类型(97-2003, 2007, 2010)⽂件。

通过Spire.XLS for .NET,开发⼈员可以快速⽅便的查看,⽣成,读写以及⾃定义编辑Excel⽂件。

探索服务器端Excel数据处理:ASP与ADODB的协同

探索服务器端Excel数据处理:ASP与ADODB的协同

探索服务器端Excel数据处理:ASP与ADODB的协同《探索服务器端Excel数据处理:ASP与ADODB的协同》在当今数字化时代,数据的处理和分析变得尤为重要。

尤其是在服务器端,处理Excel文件成为了一项常见且关键的任务。

本文将深入探讨如何使用ASP(Active Server Pages)和ADODB(ActiveX Data Objects)技术来处理上传的Excel文件,实现数据的有效管理和操作。

一、ASP与ADODB:服务器端数据处理的基石ASP作为一种服务器端脚本环境,能够与数据库进行交互,处理客户端请求,生成动态网页。

而ADODB则提供了一种与数据源进行交互的途径,使得在服务器端处理数据成为可能。

二、Excel文件的服务器端读取在服务器端读取Excel文件,首先需要确保文件的路径正确,然后通过ADODB连接对象建立与Excel文件的连接。

使用特定的连接字符串,可以指定Excel文件作为数据源,并设置相应的属性以适应不同的Excel版本。

三、数据的提取与处理一旦连接建立,就可以使用ASP脚本执行SQL查询,从Excel文件中提取数据。

通过遍历结果集,可以逐行读取数据,为进一步的处理和分析做准备。

四、数据的插入与数据库操作获取数据后,常见的操作是将这些数据插入到数据库中。

通过构建合适的SQL语句,可以将Excel中的数据导入到数据库表中,实现数据的持久化存储。

五、性能优化与错误处理在处理Excel文件时,性能优化和错误处理是不可忽视的环节。

合理的资源管理和错误捕捉机制,能够确保数据处理的稳定性和可靠性。

六、结语:ASP与ADODB的协同优势通过ASP和ADODB的协同工作,服务器端的Excel数据处理变得高效且灵活。

这种技术组合不仅提高了数据处理的自动化水平,还为数据驱动的Web应用提供了强大的支持。

winform读取excel的方法

winform读取excel的方法

winform读取excel的方法在WinForms应用程序中,读取Excel文件是一个常见的任务。

可以使用以下方法来实现:1. 使用Microsoft Office Interop库:这是一种使用Microsoft Office提供的COM接口来读取Excel文件的方法。

首先,确保计算机上已安装Microsoft Excel。

然后,在项目中添加对Microsoft Office Interop库的引用。

下面是一个示例代码,展示了如何使用该方法:```csharpusing Excel = Microsoft.Office.Interop.Excel;// 创建Excel应用程序对象Excel.Application excelApp = new Excel.Application();// 打开Excel文件Excel.Workbook workbook = excelApp.Workbooks.Open("路径/文件名.xlsx");// 选择要读取的工作表Excel.Worksheet worksheet = workbook.Sheets["工作表名称"];// 获取单元格的值string cellValue = worksheet.Cells[row, column].Value.ToString();// 关闭Excel文件和应用程序对象workbook.Close();excelApp.Quit();```请注意,使用COM对象会占用系统资源,并且需要正确处理释放资源的步骤。

2. 使用第三方库:除了使用Microsoft Office Interop库,还可以使用一些第三方库来读取Excel文件,例如EPPlus和NPOI。

这些库提供了更简单和高效的方法。

下面是一个使用EPPlus库的示例代码:```csharpusing OfficeOpenXml;// 打开Excel文件using (ExcelPackage package = new ExcelPackage(new FileInfo("路径/文件名.xlsx"))){// 选择要读取的工作表ExcelWorksheet worksheet = package.Workbook.Worksheets["工作表名称"];// 获取单元格的值string cellValue = worksheet.Cells[row, column].Value.ToString();}```使用第三方库可以实现更好的性能和更简化的代码,但需要先将库添加到项目中。

ASP 读取文件内容

ASP  读取文件内容

ASP 读取文件内容
用户在对各种文件进行操作时,如果想查看某文件的内容时,可以鼠标左键双击该文件图标,打开文件并查看。

本扩展练习中,将使用File对象实现读取文本文件内容信息并显示在浏览器上的功能。

(1)创建一个命名为ReadTxt.asp的ASP页面,主要实现留言内容的添加。

左键单击【文件】|【新建】命令,弹出【新建文档】对话框,在对话框的【文件类型】中选择【ASP VbScript】,【布局】中选择【无】,单击【创建】按钮。

(2)左键单击【文件】|【保存】命令,弹出另存为对话框。

在对话框的【文件名】中输入ReadTxt.asp,【保存类型】的下拉列表框中选择“Active Server Pages(*.asp;*.asa)”,单击【保存(S)】按钮。

(3)添加ASP文件要用到的语言包和编码。

(5)执行上述代码,结果如图5-14所示。

图5-14 查看TXT文本信息。

ASP对Excel的所有操作

ASP对Excel的所有操作
删除方案由三部分组成:
A: 同一用户生成的Excel文件用同一个文件名,文件名可用用户ID号或SessionID号等可确信不重复字符串组成。这样新文件生成时自动覆盖上一文件。
B: 在Global.asa文件中设置Session_onEnd事件激发时,删除这个用户的Excel暂存文件。
C: 在Global.asa文件中设置Application_onStart事件激发时,删除暂存目录下的所有文件。
6、 绑定Chart图
objExcelApp.ActiveChart.Location 1
7、 显示数据表
objExcelApp.ActiveChart.HasDataTable = True
8、 显示图例
objExcelApp.ActiveChart.DataTable.ShowLegendKey = True
目录
一、 环境配置
二、 ASP对Excel的基本操作
三、 ASP操作Excel生成数据表
四、 ASP操作E件浏览、下载、删除方案
六、 附录
正文
一、 环境配置
服务器端的环境配置从参考资料上看,微软系列的配置应该都行,即:
1.Win9x+PWS+Office
2、 新建Excel文件
objExcelApp.WorkBooks.add
set objExcelBook = objExcelApp.ActiveWorkBook
set objExcelSheets = objExcelBook.Worksheets
set objExcelSheet = objExcelBook.Sheets(1)

使用Aspose插件对Excel操作

使用Aspose插件对Excel操作

使⽤Aspose插件对Excel操作使⽤使⽤Aspose插件对Excel⽂档进⾏导⼊导出操作使⽤前请先下载Aspose插件引⽤Excel导⼊:前台使⽤file标签获取,submit⽅式提交。

<form id="form1" enctype="multipart/form-data" method="post"><table class="table-condensed"><tr><td class="text-right">导⼊表格:</td><td class="text-left"><input type="file" name="file1" class="btn btn-default btn-lg"/></td></tr><tr><td class="text-left"><input type="submit" id="btnImport" name="btnImport" value="导⼊" class="btn btn-default"/></td></tr></table></form>后台接收:HttpPostedFileBase fileBase = Request.Files["file1"];//这⾥获取名称与前台标签name保持⼀致if (fileBase != null){string filename = Path.GetFileName(fileBase.FileName);string extension = Path.GetExtension(filename);string path = "/Upload/Test/" + DateTime.Now.ToString("yyyyMMdd") + "/";Directory.CreateDirectory(Path.GetDirectoryName(Request.MapPath(path)));string newFilename = DateTime.Now.ToString("yyyyMMddHHmmssfff");string fullFileName = path + newFilename + extension;fileBase.SaveAs(Request.MapPath(fullFileName)); try{ Stopwatch sw = new Stopwatch();//记录导⼊操作⽤时多长sw.Start();//这⾥可放⼊BLL⽅法处理string result = new ProductBLL().ImportExcel(Request.MapPath(path), newFilename, extension);//BLL⽅法 ProductBLLpublic string ImportExcel(string path, string filename, string extension){Workbook workbook = new Workbook(path + filename + extension);Worksheet worksheet = workbook.Worksheets[0];Cells cells = worksheet.Cells;for (int i = 1; i < cells.Rows.Count; i++){try{string brand = cells[i, 0].StringValue.Trim();//获取列值string years = cells[i, 1].StringValue.Trim();}catch (Exception e){continue;}}return "OK";} sw.Stop();long runTime = sw.ElapsedMilliseconds / 1000; //获取到操作⽤时多少秒 } catch (Exception e){Log.Write("导⼊", "导⼊错误", "错误信息:" + e.Message);}}Excel导出:string path = "/Upload/Test/" + DateTime.Now.ToString("yyyyMMdd") + "/";Directory.CreateDirectory(Path.GetDirectoryName(Server.MapPath(path)));string newFilename = DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xls";string fullFileName = Server.MapPath(path + newFilename);public void ExportInfo(List<Test> list, string fullFileName){Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook();Aspose.Cells.Worksheet cellSheet = workbook.Worksheets[0];cellSheet.PageSetup.LeftMargin = 0.3;//左边距cellSheet.PageSetup.RightMargin = 0.3;//右边距cellSheet.PageSetup.TopMargin = 1;//上边距cellSheet.PageSetup.BottomMargin = 0.5;//下边距cellSheet.PageSetup.FooterMargin = 0.5;//页脚cellSheet.PageSetup.HeaderMargin = 0.5;//页眉cellSheet.PageSetup.Orientation = ndscape;cellSheet.PageSetup.CenterHorizontally = true;//⽔平居中cellSheet.PageSetup.CenterVertically = true;cellSheet.Cells[0, 0].PutValue("货号");cellSheet.Cells[0, 1].PutValue("颜⾊");cellSheet.Cells[0, 2].PutValue("尺码");int i = 1;foreach (var item in list){cellSheet.Cells[i, 0].PutValue(item.productno);cellSheet.Cells[i, 1].PutValue(item.size);cellSheet.Cells[i, 2].PutValue(item.color);i++;}cellSheet.AutoFitColumns();fullFileName = Path.GetFullPath(fullFileName);workbook.Save(fullFileName);}return File(fullFileName, "application/ms-excel", UserName + "_Test单" + newFilename);// ⽅法Action⾥直接返回File⽂件下载。

sxssfworkbook读取excel用法 -回复

sxssfworkbook读取excel用法 -回复

sxssfworkbook读取excel用法-回复标题:SXSSFWorkbook读取Excel文件的详细用法字数:1879字摘要:SXSSFWorkbook是Apache POI库中一个用于处理大型Excel文件的工具。

本文将深入探讨如何使用SXSSFWorkbook来读取Excel文件,并提供详细的步骤和示例代码。

引言:在日常工作和数据处理中,Excel表格是一种常见的数据格式。

然而,当面临大规模数据或者大型Excel文件时,传统的Excel读取方法可能会遇到性能问题。

为解决这个问题,Apache POI库引入了SXSSFWorkbook 类,它是一种基于XSSF(Streaming Usermodel,适用于大文件)的替代品。

SXSSFWorkbook可以快速读取大型Excel文件而不会导致内存问题。

本文将介绍SXSSFWorkbook读取Excel文件的基本步骤,包括准备工作、创建SXSSFWorkbook对象、操作Excel文件、读取数据和关闭资源等。

一、准备工作在使用SXSSFWorkbook读取Excel文件之前,需要确保已经正确安装以下工具:1. Java开发环境,如JDK等;2. Apache POI库,最新版本的jar文件。

二、创建SXSSFWorkbook对象在准备工作完成后,可以开始创建SXSSFWorkbook对象。

下面是一段示例代码:javaimport org.apache.poi.xssf.streaming.SXSSFWorkbook;public class ExcelReader {public static void main(String[] args) {SXSSFWorkbook workbook = new SXSSFWorkbook();}}在这个示例中,我们导入了SXSSFWorkbook类,并在main方法中创建了一个SXSSFWorkbook对象。

三种读取Excel方法

三种读取Excel方法

三种读取Excel方法转自:/happy09li/article/details/7431967 三种读取Excel方法---------------------------------------------------方法一[csharp] view plaincopy/// <summary>/// 解析Excel,返回DataTable/// </summary>/// <param name="fileName"></param>/// <returns></returns>public static System.Data.DataT able ImpExcel(string fileName){System.Data.DataT able dt = new System.Data.DataTable();try{Microsoft.Office.Interop.Excel.Application app;Workbooks wbs;Worksheet ws;app = new Microsoft.Office.Interop.Excel.Application();wbs = app.Workbooks;wbs.Add(fileName);ws = (Worksheet)app.Worksheets.get_Item(1);int rows = edRange.Rows.Count;int columns = edRange.Columns.Count;string bookName = ;dt = LoadDataFromExcel(filePath, bookName).Tables[0];//for (int i = 1; i < rows + 1; i++)//{// DataRow dr = dt.NewRow();// for (int j = 1; j <= columns; j++)// {// _Excel.Range range = ws.get_Range(app.Cells[i, j], app.Cells[i, j]);// range.Select();// if (i == 1)// dt.Columns.Add("Columns" + j);// dt.Columns.Add(app.ActiveCell.Text.T oString())可以直接用第一行作为列名,单合并单元格后,读取出来后列名相同会报错,所以最好不用// dr[j - 1] = app.ActiveCell.Text.T oString();// }// dt.Rows.Add(dr);//}//newdt = dt.Clone();//for (int i = 0; i < dt.Rows.Count; i++)//{// if (dt.Rows[i][5].T oString() != "" && dt.Rows[i][6].T oString() != "" && dt.Rows[i][7].T oString() != "" && dt.Rows[i][8].T oString() != "" || i == 0)// newdt.ImportRow(dt.Rows[i]);//}KillProcess(app);return dt;}catch (Exception ex){MessageBox.Show("数据绑定Excel失败! 失败原因:"+ex.Message, "提示信息", MessageBoxButtons.OK, rmation);return dt;}}----------------------------------------------------方法二[csharp] view plaincopy/// <summary>/// 解析Excel/// </summary>/// <param name="filePath"></param>/// <param name="name"></param>/// <returns></returns>public static DataSet LoadDataFromExcel(string filePath, string name){try{string strConn;// strConn = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + filePath + ";Extended Properties=Excel 8.0";strConn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties='Excel 12.0 Xml;HDR=Yes;IMEX=1'";OleDbConnection OleConn = new OleDbConnection(strConn);OleConn.Open();string sql = "SELECT * FROM [" + name + "$]";//可是更改Sheet名称,比如sheet2,等等OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);DataSet OleDsExcle = new DataSet();OleDaExcel.Fill(OleDsExcle, name);OleConn.Close();return OleDsExcle;}catch (Exception err){MessageBox.Show("数据绑定Excel失败! 失败原因:" + err.Message, "提示信息", MessageBoxButtons.OK, rmation);return null;}}——————————————————插入Excel[csharp] view plaincopy/// <summary>/// 写入Excel文档/// </summary>/// <param name="Path">文件名称</param>public bool SaveFP2toExcel(string Path){try{string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";OleDbConnection conn = new OleDbConnection(strConn);conn.Open();System.Data.OleDb.OleDbCommand cmd=new OleDbCommand ();cmd.Connection =conn;for(int i=0;i<fp2.Sheets [0].RowCount -1;i++){if(fp2.Sheets [0].Cells[i,0].Text!=""){mandText ="INSERT INTO [sheet1$] (工号,姓名,部门,职务,日期,时间) VALUES('"+fp2.Sheets [0].Cells[i,0].Text+ "','"+ fp2.Sheets [0].Cells[i,1].Text+"','"+fp2.Sheets [0].Cells[i,2].Text+"','"+fp2.Sheets [0].Cells[i,3].Text+"','"+fp2.Sheets [0].Cells[i,4].Text+"','"+fp2.Sheets [0].Cells[i,5].Text+"')";cmd.ExecuteNonQuery ();}}conn.Close ();return true;}catch(System.Data.OleDb.OleDbException ex){System.Diagnostics.Debug.WriteLine ("写入Excel发生错误:"+ex.Message );}return false;}[csharp] view plaincopy//新增、修改_Excel.Application app = new _Excel.ApplicationClass();app.Visible = false;_Excel.Workbook book = app.Workbooks.Open(UpdateExcelPath, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing);_Excel.Worksheet sheet = (_Excel.Worksheet)book.ActiveSheet;for (int i = 0; i < dt.Rows.Count; i++){sheet.Cells[i + 2, 1] = dt.Rows[i][0].T oString();sheet.Cells[i + 2, 2] = dt.Rows[i][1].T oString();}book.Save();book.Close(sheet, UpdateExcelPath, System.Type.Missing);app.Quit();System.GC.Collect();[csharp] view plaincopy——————————————————修改Excel的值//修改第一行Name的值为张三string strComm = "update [Sheet1$] set Name='张三' WHERE 工号='132'";OleDbConnection myConn = newOleDbConnection(strConn);myConn.Open();OleDbCommand com = new OleDbCommand(strComm, myConn);com.ExecuteNonQuery();myConn.Close();方法三用NPOI读取----------------------------用流导出Excel[csharp] view plaincopy<span style="font-size:18px;"> private void FileStream() {FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write);StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.GetEncoding("gb2312"));string html = @"C:\Documents and Settings\Administrator\桌面\1.html";sw.WriteLine(File.ReadAllText(html));sw.Close();}</span>----------------------------导出[csharp] view plaincopyusing _Excel = Microsoft.Office.Interop.Excel;using System.Drawing;using System.Reflection;using System.Windows.Forms;using Microsoft.Office.Interop.Excel;/// <summary>/// DataTable直接导出Excel,此方法会把DataTable的数据用Excel打开,再自己手动去保存到确切的位置/// </summary>/// <param name="dt">要导出Excel的DataTable</param> /// <returns></returns>public static void ExportExcel(System.Data.DataTable table, string savePath, bool isExit){if (!isExit)//保存路径是否存在File.Copy(System.Windows.Forms.Application.StartupPath + @"\Excel\Excel.xls", savePath);_Excel.Application app = new _Excel.ApplicationClass();if (app == null){throw new Exception("Excel无法启动");}app.Visible = false;_Excel.Workbook book = app.Workbooks.Open(savePath, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing);_Excel.Worksheet sheet = (_Excel.Worksheet)book.ActiveSheet;for (int k = 1; k < ds.Tables[1].Rows.Count + 1; k++){_Excel.Sheets xlSheets = book.Sheets as Sheets;// 添加 Sheetsheet = (Worksheet)xlSheets.Add(xlSheets[1], Type.Missing, Type.Missing, Type.Missing);}for (int j = 1; j < ds.Tables[1].Rows.Count + 1; j++){_Excel.Range range = null;sheet = (_Excel.Worksheet)book.Sheets[j];if (!istrue) ="123";else = "345";range = sheet.get_Range("A1", "C3");range.MergeCells = true;//合并,将1-3行和1-3列合并为一个单元格range.WrapText = true; //自动换行range.EntireRow.AutoFit();//行高根据内容自动调整sheet.get_Range("A1","C3").Borders[XlBordersIndex.xlEdgeBottom].LineStyle = BorderStyle.FixedSingle;//将1-3行和1-3列合并的单元格划下划线,根据[]内属性,可以设置文本上、下、左、右的的边框框sheet.get_Range("A1", "C3").Borders.LineStyle = BorderStyle.FixedSingle;//给整个合并的单元格加上边框sheet.get_Range("A1", "C3") = "Times New Roman";//设置字体.sheet.get_Range("A1", "C3").Font.Size = 22;//设置字体大小range.Font.Bold = true;//加粗range.RowHeight = 22;//调行高rang.Interior.Color = System.Drawing.Color.FromArgb(255, 204, 153).ToArgb();//加背景色range = sheet.get_Range(string.Format("D{0}", 1), string.Format("F{0}", 1));range.MergeCells = true;//合并,将3-5列合并为一个单元格range.HorizontalAlignment = XlHAlign.xlHAlignCenter;//合并后文本水平居中range.VerticalAlignment = XlVAlign.xlVAlignCenter;//合并后文本竖直居中單個sheet里求和:Excel.Range range2 = sheet.get_Range("B25", Type.Missing);range2.Formula = "=SUM(B2:B24)";range2.Calculate();rang = (_Excel.Range)sheet.get_Range(string.Format("G{0}", 7), string.Format("G{0}", table.Rows.Count + 7));rang.NumberFormatLocal = "$#,##0.00"; //设置单元格格式为货币格式跨sheet求和:Excel.Worksheet wsheet1 = (Excel.Worksheet)excelSql.Worksheets.get_Item(1);Excel.Range range3 =wsheet1.get_Range("A23", Type.Missing);range3.Formula = "=Sheet3!B8+Sheet3!B12";range3.Calculate();sheet.Cells[1, 4] = ds.Tables[1].Rows[0]["FeightCode"].T oString();//给合并的列赋值//循环加载数据int startIndex = 0;for (int i = 0; i < ds.Tables[0].Rows.Count; i++){if (ds.Tables[1].Rows[j - 1]["BoxCode"].ToString() == ds.Tables[0].Rows[i]["BoxCode"].T oString()){range = sheet.get_Range("b" + (15 + startIndex) + "", "e" + (15 + startIndex) + "");range.MergeCells = true;sheet.Cells[15 + startIndex, 2] = ds.Tables[0].Rows[i]["TypeName"].T oString();range = (_Excel.Range)sheet.Cells[15 + startIndex, 2];range.HorizontalAlignment = XlHAlign.xlHAlignCenter;range.Font.Bold = true;range.RowHeight = 22;sheet.Cells[15 + startIndex, 6] = ds.Tables[0].Rows[i]["Qty"].T oString();range = (_Excel.Range)sheet.Cells[15 + startIndex, 6];range.HorizontalAlignment = XlHAlign.xlHAlignCenter;range.Font.Bold = true;range.RowHeight = 22;sheet.Cells[15 + startIndex, 7] = ds.Tables[0].Rows[i]["UnitPrice"].T oString();range = (_Excel.Range)sheet.Cells[15 + startIndex, 7];range.HorizontalAlignment = XlHAlign.xlHAlignCenter;range.Font.Bold = true;range.RowHeight = 22;sheet.Cells[15 + startIndex, 8] = ds.Tables[0].Rows[i]["Subtotal"].ToString();range = (_Excel.Range)sheet.Cells[15 + startIndex, 8];range.HorizontalAlignment = XlHAlign.xlHAlignCenter;range.Font.Bold = true;range.RowHeight = 22;Image image = Picture.ReadPicture(ds.Tables[0].Rows[row][col].ToString());range = sheet.get_Range(string.Format("A{0}", row * num + 29), string.Format("A{0}", row * num + 48));sheet.Shapes.AddPicture(ds.Tables[0].Rows[row][col].ToStrin g(), Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoTrue,Convert.T oSingle(range.Left) + 15 + image.Width, Convert.T oSingle(range.Top) + 5, image.Width, image.Height); //插入图片range.EntireColumn.AutoFit();System.Windows.Forms.Application.DoEvents();startIndex++;}}[csharp] view plaincopyRange ran = (Range)sheet.Cells[1, 1];//Excel导出加下拉框ran.Validation.Add(XlDVType.xlValidateList, XlDVAlertStyle.xlValidAlertStop, XlFormatConditionOperator.xlBetween, "1,2,3", "123");ran.Validation.InCellDropdown = true;ran.Validation.IgnoreBlank = true;ran.Value2 = "2";rang = sheet.get_Range("a" + (table.Rows.Count + 3) + "", "r" + (table.Rows.Count + 3) + "");rang.Font.Bold = true;rang.Interior.Color = System.Drawing.Color.FromArgb(255, 204, 153).ToArgb();//设置单元格背景颜色sheet.Columns.AutoFit();sheet.Cells.EntireColumn.AutoFit();sheet.Columns.EntireColumn.AutoFit();//列宽自适应。

用ASP访问excel中的数据

用ASP访问excel中的数据

用ASP访问excel中的数据1、建立一个链接文件名为conn。

<%db="D:\标件.xlsx" '用的是数据实际路径哈’set conn =server.CreateObject("adodb.connection")connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & db + "';Extended Properties='Excel 12.0;HDR=YES;IMEX=1';"conn.open connstr ’打开excel%>2、查询excel表格中的内容。

<%sqlstr="select * from [标件2010年$] order by 序列desc" ‘查询语句set rs =server.CreateObject("adodb.recordset")rs.open sqlstr,conn,0,1rs.movefirstdo while not rs.eof %><tr><td width='50' height='20'><%response.write(rs("序列"))%></td><td width='70' height='20'><%response.write(rs("标准"))%></td><td width='100' height='20'><%response.write(rs("名称"))%></td><td width='60' height='20'><%response.write(rs("材质"))%></td><td width='120' height='20'><%response.write(rs("规格型号"))%></td><td width="60" height="20"><%response.write(rs("单位"))%></td><td width="120" height="20"><%response.write(rs("入库数量"))%></td><td width="50" height="20"><%response.write(rs("入库时间"))%></td><td width="80" height="20"><%response.write(rs("出库数量"))%></td><td width="80" height="20"><%response.write(rs("出库时间"))%></td><td width="80" height="20"><%response.write(rs("领用人"))%></td><td width="70" height="20"><%response.write(rs("合同号"))%></td><td width="80" height="20"><%response.write(rs("库存数量"))%></td><td width="60" height="20"><%response.write(rs("备注"))%></td></tr><%rs.movenextloopresponse.Write"</table>"conn.close%>。

如何用asp读取Excel文件(比较全面)

如何用asp读取Excel文件(比较全面)

如何用asp读取Excel文件(比较全面)1.ASP对Excel的基本操作(1) 建立Excel对象创建Excel对象可以通过下面的代码来实现:<%set objExcelApp = CreateObject("Excel.Application")objExcelApp.DisplayAlerts = false '不显示警告objExcelApp.Application = false '不显示界面%>(2) 新建Excel文件新建Excel文件可以通过以下代码来实现:<%objExcelApp.WorkBooks.addset objExcelBook = objExcelApp.ActiveWorkBookset objExcelSheets = objExcelBook.Worksheetsset objExcelSheet = objExcelBook.Sheets(1)%>(3) 读取已有的Excel文件读取已有的Excel文件可以通过下面的代码来实现<%strAddr = Server.MapPath(".")objExcelApp.WorkBooks.Open(strAddr & "TempletTable.xls")set objExcelBook = objExcelApp.ActiveWorkBookset objExcelSheets = objExcelBook.Worksheetsset objExcelSheet = objExcelBook.WorkSheets(1)%>(4) 另存Excel文件另存Excel文件可以通过以下代码来实现<%objExcelBook.SaveAs strAddr & "templateTables.xls" %>(5) 保存Excel文件保存Excel文件可以通过以下代码来实现:<%objExcelBook.Save%>(6) 退出Excel操作<%objExcelApp.Quit '一定要退出set objExcelApp = nothing%>2 读取Excel文件的实例<%set xlApp = server.CreateObject("Excel.Application") strsource = server.MapPath("xl.xls")set xlbook = xlApp.WorkBooks.Open(strsource)set xlsheet = xlbook.Worksheets(1)i = 1response.write "<table>"while xlsheet.cells(i,1) <> ""response.write "<tr>"response.write "<td>" & xlsheet.Cells(i,1) & "</td>" response.write "<td>" & xlsheet.Cells(i,2) & "</td>" response.write "<td>" & xlsheet.Cells(i,3) & "</td>" response.write "<tr>"i = i + 1wendresponse.write "</table>"set xlsheet = nothingset xlbook = nothingxlApp.quit'千万记住要加这一句,否则每运行一次你的机器里就增加一个Excel进程,而且无法释放'set xlApp = nothing 是不行的%>====================================== ==========================3.怎样将数据从Excel导入到SQL Server中(1)<%subdataIntoSqlServer_ceritificate(strFileName,strSheetName,myCon n)'定义dim myConnectiondim strNamedim rsXsl,rsSqldim myConn_Xsldim cmddim i,jdim maxIdstrName = strFileNameset myConnection = Server.CreateObject("ADODB.Connection")set rsXsl = Server.CreateObject("ADODB.Recordset")set rsSql = Server.CreateObject("ADODB.Recordset")set cmd = server.CreateObject("mand")cmd.ActiveConnection = myConnmyConn_Xsl = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strName & _";Extended Properties=Excel 8.0"'打开连接myconnection.open myConn_Xsl'打开表str_Xsl = "select * from [" & strSheetName & "$]"rsXsl.open str_Xsl,myconnection,1,1j = 1Do while not rsXsl.eof'取出最大值str_sql = "select Max(id) as maxId from exceltosql"rsSql.open str_Sql,myConn,1,3if Not rsSql.eof thenif not isNull(rsSql("maxId")) thenmaxId=CLng(rsSql("maxId")) + 1elsemaxId = 1end ifelsemaxId = 1end ifrsSql.close '//关闭对象'加入数据库str_Sql = "insert into exceltosql values(" & maxId&",'"&rsXsl(1)&"','" & rsXsl(2)&"')"mandText = str_Sqlcmd.Excute()''''''''''''''''''''''''''''''''''''''''''j = j + 1rsXsl.moveNextloopresponse.write "共导入 " & j_1 & " 条记录.<br>"response.write "<a href=# onclick='self.close();'>关闭窗口</a>"set rsXsl = nothingset rsSql = nothingset myconnection = nothingset cmd = nothingend sub(2)'调用方法<%file1 = "c:\excelexample.xls"myconn = "DRIVER={SQL SERVER};SERVER=(local);uid=sa;pwd=sa;DATABASE=aspbook"dataIntoSqlServer_ceritificate file1,"sheet1",myconn%>=============================================================================4.ASP操作Excel技术总结目录一、环境配置二、 ASP对Excel的基本操作三、 ASP操作Excel生成数据表四、 ASP操作Excel生成Chart图五、服务器端Excel文件浏览、下载、删除方案六、附录正文一、环境配置服务器端的环境配置从参考资料上看,微软系列的配置应该都行,即:1.Win9x+PWS+Office2.Win2000 Professional+PWS+Office3.Win2000 Server+IIS+Office目前笔者测试成功的环境是后二者。

ASP导入Excel表格

ASP导入Excel表格

201412261323_ASP导入Excel表格导入EXCEL表格常用于批处理数据或者数据迁移项目。

导入代码如下:<!--#include file="conn.asp" --><%Set ConnExcel=Server.CreateObject("ADODB.Connection")'--利用Open 方法打开数据库StrExcelConn="Driver={Microsoft Excel Driver (*.xls)};"&"DriverId=790; DBQ="&Server.MapPath("card.xls") 'EXCEL文件路径ConnExcel.Open StrExcelConn'--建立数据集对象Rs并查询数据Set Rs = Server.CreateObject("ADODB.Recordset")Sql="select * from [default$]" '特别注意EXCEL表名要一致rs.Open Sql,ConnExcel,1,1do while not rs.eofrsx=server.createobject("adodb.recordset")setsqlx="select * from pcard"sqlx,conn,1,3rsx.openrsx.addnewrsx("cardnum")=rs(0)rsx("cardpwd")=rs(1)rsx("cardpay")=cint(rs(2))rsx.updatersx.closersx=nothingsetrs.MoveNextlooprs.closeset rs=nothingConnExcel.closeset ConnExcel=nothingCall Closeconn()response.write "<script language=JavaScript>"response.Write "alert('导入成功!'); "response.Write "</script>"Response.end()%>人生最精彩的不是实现梦想的瞬间,而是坚持梦想的过程。

[Asp.net]C#操作Excel的几种方式优缺点比较

[Asp.net]C#操作Excel的几种方式优缺点比较

[]C#操作Excel的⼏种⽅式优缺点⽐较在项⽬中我们常常需要将数据库中的数据导出成Excel⽂件有⼀次⼯作中我的⽬的就是读取Excel到内存中,整理成指定格式整理后再导出到Excel。

因为我要处理的每个Excel表格⽂件很⼤。

⼀个表格多个sheet,每个sheet-⼀千到上W⾏不等。

列数超过300列。

所有在这⾥我将在使⽤⼀些处理Excel的⽅法的时候,所遇到的⼀些问题记录下来,也做⼀个⼤致的⽐较。

主要是针对此次数据处理NPOI⽬前⽐较流⾏的⼀款操作Excel的组件。

移植于Java的POI,是⼀个开源项⽬,对Excel的操作很全⾯。

官⽹优势:1、免费2、机器不⽤安装Office也可以直接操作Excel,免去很多事。

3、现在已⾄此的⽂件格式包括Excel2003和2007之后的xls,xlsx以及docx。

4、⽀持⽂件的导⼊和导出5、⽹上有丰富的实例代码,遇到基本的问题可以上⽹参考⽹友的解决⽅法。

6、NPOI能⽀持绝⼤多数Excel⾥⾯的功能操作(Excel内的公式函数、设置单元格的格式样式)7、导⼊导出速度快。

内存占⽤⼤。

特定优势:⽀持读取超过256列的Excel表格。

缺点:参考⽬前很多⽹上的⽂档,npoi导出xlsx,使⽤ XSSFWorkbook 使⽤ Write ⽅法写⼊内存流后,返回的 MemoryStream 已经被关闭了,不能再使⽤了。

你需要花⼀点时间解决这个问题。

可以参考:xlsx格式导出推荐使⽤Epplus组件NPOI辅助类:1 using System;2 using System.Collections;3 using System.Collections.Generic;4 using System.Text;5 using System.IO;6 using System.Data;7 using System.Windows.Forms;8 using erModel;9 using erModel;10 using erModel;1112 namespace TEMS.Service13 {14 public static class ExcelHelperForCs15 {16 #region 私有⽅法1718 /// <summary>19 /// 获取要保存的⽂件名称(含完整路径)20 /// </summary>21 /// <returns></returns>22 private static string GetSaveFilePath()23 {24 SaveFileDialog saveFileDig = new SaveFileDialog();25 saveFileDig.Filter = "Excel Office97-2003(*.xls)|*.xls|Excel Office2007及以上(*.xlsx)|*.xlsx";26 saveFileDig.FilterIndex = 0;28 saveFileDig.OverwritePrompt = true;29 saveFileDig.InitialDirectory = Common.DesktopDirectory;30 string filePath = null;31 if (saveFileDig.ShowDialog() == DialogResult.OK)32 {33 filePath = saveFileDig.FileName;34 }3536 return filePath;37 }3839 /// <summary>40 /// 获取要打开要导⼊的⽂件名称(含完整路径)41 /// </summary>42 /// <returns></returns>43 private static string GetOpenFilePath()44 {45 OpenFileDialog openFileDig = new OpenFileDialog();46 openFileDig.Filter = "Excel Office97-2003(*.xls)|*.xls|Excel Office2007及以上(*.xlsx)|*.xlsx";47 openFileDig.FilterIndex = 0;48 openFileDig.Title = "打开";49 openFileDig.CheckFileExists = true;50 openFileDig.CheckPathExists = true;51 openFileDig.InitialDirectory = Common.DesktopDirectory;52 string filePath = null;53 if (openFileDig.ShowDialog() == DialogResult.OK)54 {55 filePath = openFileDig.FileName;56 }5758 return filePath;59 }6061 /// <summary>62 /// 判断是否为兼容模式63 /// </summary>64 /// <param name="filePath"></param>65 /// <returns></returns>66 private static bool GetIsCompatible(string filePath)67 {68 return filePath.EndsWith(".xls", StringComparison.OrdinalIgnoreCase);69 }7071 /// <summary>72 /// 创建⼯作薄73 /// </summary>74 /// <param name="isCompatible"></param>75 /// <returns></returns>76 private static IWorkbook CreateWorkbook(bool isCompatible)77 {78 if (isCompatible)79 {80 return new HSSFWorkbook();81 }82 else83 {84 return new XSSFWorkbook();85 }86 }8788 /// <summary>89 /// 创建⼯作薄(依据⽂件流)90 /// </summary>91 /// <param name="isCompatible"></param>92 /// <param name="stream"></param>93 /// <returns></returns>94 private static IWorkbook CreateWorkbook(bool isCompatible, dynamic stream)95 {96 if (isCompatible)97 {98 return new HSSFWorkbook(stream);99 }100 else101 {102 return new XSSFWorkbook(stream);103 }104 }105106 /// <summary>107 /// 创建表格头单元格108 /// </summary>109 /// <param name="sheet"></param>110 /// <returns></returns>111 private static ICellStyle GetCellStyle(IWorkbook workbook)112 {113 ICellStyle style = workbook.CreateCellStyle();114 style.FillPattern = FillPattern.SolidForeground;115 style.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.Grey25Percent.Index;116117 return style;118 }120 /// <summary>121 /// 从⼯作表中⽣成DataTable122 /// </summary>123 /// <param name="sheet"></param>124 /// <param name="headerRowIndex"></param>125 /// <returns></returns>126 private static DataTable GetDataTableFromSheet(ISheet sheet, int headerRowIndex) 127 {128 DataTable table = new DataTable();129130 IRow headerRow = sheet.GetRow(headerRowIndex);131 int cellCount = stCellNum;132133 for (int i = headerRow.FirstCellNum; i < cellCount; i++)134 {135 if (headerRow.GetCell(i) == null || headerRow.GetCell(i).StringCellValue.Trim() == "") 136 {137 // 如果遇到第⼀个空列,则不再继续向后读取138 cellCount = i;139 break;140 }141 DataColumn column = new DataColumn(headerRow.GetCell(i).StringCellValue); 142 table.Columns.Add(column);143 }144145 for (int i = (headerRowIndex + 1); i <= stRowNum; i++)146 {147 IRow row = sheet.GetRow(i);148 //如果遇到某⾏的第⼀个单元格的值为空,则不再继续向下读取149 if (row != null && !string.IsNullOrEmpty(row.GetCell(0).ToString()))150 {151 DataRow dataRow = table.NewRow();152153 for (int j = row.FirstCellNum; j < cellCount; j++)154 {155 dataRow[j] = row.GetCell(j).ToString();156 }157158 table.Rows.Add(dataRow);159 }160 }161162 return table;163 }164165 #endregion166167 #region 公共导出⽅法168169 /// <summary>170 /// 由DataSet导出Excel171 /// </summary>172 /// <param name="sourceTable">要导出数据的DataTable</param>173 /// <returns>Excel⼯作表</returns>174 public static string ExportToExcel(DataSet sourceDs, string filePath = null)175 {176177 if (string.IsNullOrEmpty(filePath))178 {179 filePath = GetSaveFilePath();180 }181182 if (string.IsNullOrEmpty(filePath)) return null;183184 bool isCompatible = GetIsCompatible(filePath);185186 IWorkbook workbook = CreateWorkbook(isCompatible);187 ICellStyle cellStyle = GetCellStyle(workbook);188189 for (int i = 0; i < sourceDs.Tables.Count; i++)190 {191 DataTable table = sourceDs.Tables[i];192 string sheetName = "result" + i.ToString();193 ISheet sheet = workbook.CreateSheet(sheetName);194 IRow headerRow = sheet.CreateRow(0);195 // handling header.196 foreach (DataColumn column in table.Columns)197 {198 ICell cell = headerRow.CreateCell(column.Ordinal);199 cell.SetCellValue(column.ColumnName);200 cell.CellStyle = cellStyle;201 }202203 // handling value.204 int rowIndex = 1;205206 foreach (DataRow row in table.Rows)207 {208 IRow dataRow = sheet.CreateRow(rowIndex);209210 foreach (DataColumn column in table.Columns)212 dataRow.CreateCell(column.Ordinal).SetCellValue((row[column] ?? "").ToString());213 }214215 rowIndex++;216 }217 }218219 FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);220 workbook.Write(fs);221 fs.Dispose();222 workbook = null;223224 return filePath;225226 }227228 /// <summary>229 /// 由DataTable导出Excel230 /// </summary>231 /// <param name="sourceTable">要导出数据的DataTable</param>232 /// <returns>Excel⼯作表</returns>233 public static string ExportToExcel(DataTable sourceTable, string sheetName = "result", string filePath = null)234 {235 if (sourceTable.Rows.Count <= 0) return null;236237 if (string.IsNullOrEmpty(filePath))238 {239 filePath = GetSaveFilePath();240 }241242 if (string.IsNullOrEmpty(filePath)) return null;243244 bool isCompatible = GetIsCompatible(filePath);245246 IWorkbook workbook = CreateWorkbook(isCompatible);247 ICellStyle cellStyle = GetCellStyle(workbook);248249 ISheet sheet = workbook.CreateSheet(sheetName);250 IRow headerRow = sheet.CreateRow(0);251 // handling header.252 foreach (DataColumn column in sourceTable.Columns)253 {254 ICell headerCell = headerRow.CreateCell(column.Ordinal);255 headerCell.SetCellValue(column.ColumnName);256 headerCell.CellStyle = cellStyle;257 }258259 // handling value.260 int rowIndex = 1;261262 foreach (DataRow row in sourceTable.Rows)263 {264 IRow dataRow = sheet.CreateRow(rowIndex);265266 foreach (DataColumn column in sourceTable.Columns)267 {268 dataRow.CreateCell(column.Ordinal).SetCellValue((row[column]??"").ToString());269 }270271 rowIndex++;272 }273 FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);274 workbook.Write(fs);275 fs.Dispose();276277 sheet = null;278 headerRow = null;279 workbook = null;280281 return filePath;282 }283284 /// <summary>285 /// 由List导出Excel286 /// </summary>287 /// <typeparam name="T">类型</typeparam>288 /// <param name="data">在导出的List</param>289 /// <param name="sheetName">sheet名称</param>290 /// <returns></returns>291 public static string ExportToExcel<T>(List<T> data, IList<KeyValuePair<string, string>> headerNameList, string sheetName = "result", string filePath = null) where T : class 292 {293 if (data.Count <= 0) return null;294295 if (string.IsNullOrEmpty(filePath))296 {297 filePath = GetSaveFilePath();298 }299300 if (string.IsNullOrEmpty(filePath)) return null;301302 bool isCompatible = GetIsCompatible(filePath);304 IWorkbook workbook = CreateWorkbook(isCompatible);305 ICellStyle cellStyle = GetCellStyle(workbook);306 ISheet sheet = workbook.CreateSheet(sheetName);307 IRow headerRow = sheet.CreateRow(0);308309 for (int i = 0; i < headerNameList.Count; i++)310 {311 ICell cell = headerRow.CreateCell(i);312 cell.SetCellValue(headerNameList[i].Value);313 cell.CellStyle = cellStyle;314 }315316 Type t = typeof(T);317 int rowIndex = 1;318 foreach (T item in data)319 {320 IRow dataRow = sheet.CreateRow(rowIndex);321 for (int n = 0; n < headerNameList.Count; n++)322 {323 object pValue = t.GetProperty(headerNameList[n].Key).GetValue(item, null);324 dataRow.CreateCell(n).SetCellValue((pValue ?? "").ToString());325 }326 rowIndex++;327 }328 FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);329 workbook.Write(fs);330 fs.Dispose();331332 sheet = null;333 headerRow = null;334 workbook = null;335336 return filePath;337 }338339 /// <summary>340 /// 由DataGridView导出341 /// </summary>342 /// <param name="grid"></param>343 /// <param name="sheetName"></param>344 /// <param name="filePath"></param>345 /// <returns></returns>346 public static string ExportToExcel(DataGridView grid, string sheetName = "result", string filePath = null) 347 {348 if (grid.Rows.Count <= 0) return null;349350 if (string.IsNullOrEmpty(filePath))351 {352 filePath = GetSaveFilePath();353 }354355 if (string.IsNullOrEmpty(filePath)) return null;356357 bool isCompatible = GetIsCompatible(filePath);358359 IWorkbook workbook = CreateWorkbook(isCompatible);360 ICellStyle cellStyle = GetCellStyle(workbook);361 ISheet sheet = workbook.CreateSheet(sheetName);362363 IRow headerRow = sheet.CreateRow(0);364365 for (int i = 0; i < grid.Columns.Count; i++)366 {367 ICell cell = headerRow.CreateCell(i);368 cell.SetCellValue(grid.Columns[i].HeaderText);369 cell.CellStyle = cellStyle;370 }371372 int rowIndex = 1;373 foreach (DataGridViewRow row in grid.Rows)374 {375 IRow dataRow = sheet.CreateRow(rowIndex);376 for (int n = 0; n < grid.Columns.Count; n++)377 {378 dataRow.CreateCell(n).SetCellValue((row.Cells[n].Value ?? "").ToString());379 }380 rowIndex++;381 }382383 FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);384 workbook.Write(fs);385 fs.Dispose();386387 sheet = null;388 headerRow = null;389 workbook = null;390391 return filePath;392 }393394 #endregion396 #region 公共导⼊⽅法397398 /// <summary>399 /// 由Excel导⼊DataTable400 /// </summary>401 /// <param name="excelFileStream">Excel⽂件流</param>402 /// <param name="sheetName">Excel⼯作表名称</param>403 /// <param name="headerRowIndex">Excel表头⾏索引</param>404 /// <param name="isCompatible">是否为兼容模式</param>405 /// <returns>DataTable</returns>406 public static DataTable ImportFromExcel(Stream excelFileStream, string sheetName, int headerRowIndex, bool isCompatible) 407 {408 IWorkbook workbook = CreateWorkbook(isCompatible, excelFileStream);409 ISheet sheet = null;410 int sheetIndex = -1;411 if (int.TryParse(sheetName, out sheetIndex))412 {413 sheet = workbook.GetSheetAt(sheetIndex);414 }415 else416 {417 sheet = workbook.GetSheet(sheetName);418 }419420 DataTable table = GetDataTableFromSheet(sheet, headerRowIndex);421422 excelFileStream.Close();423 workbook = null;424 sheet = null;425 return table;426 }427428 /// <summary>429 /// 由Excel导⼊DataTable430 /// </summary>431 /// <param name="excelFilePath">Excel⽂件路径,为物理路径。

NET读取Excel文件的方法

NET读取Excel文件的方法

NET读取Excel文件的方法如何使得读取Excel文件更加高效呢,下面小编就来告诉你三种.NET读取Excel文件的方法。

读取Excel文件方法一:采用OleDB读取Excel文件:把Excel文件当做一个数据源来进行数据的读取操作,实例如下:public DataSet ExcelToDS(string Path){string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";OleDbConnection conn = new OleDbConnection(strConn);conn.Open();string strExcel = "";OleDbDataAdapter myCommand = null;DataSet ds = null;strExcel="select * from [sheet1$]";myCommand = new OleDbDataAdapter(strExcel, strConn);ds = new DataSet(); myCommand.Fill(ds,"table1");return ds;}对于Excel中的表即sheet([sheet1$])如果不是固定的可以使用下面的方法得到代码如下:string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";OleDbConnection conn = new OleDbConnection(strConn);DataTable schemaTable = objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSche maGuid.Tables,null);string tableName=schemaTable.Rows[0][2].ToString().Trim();另外:也可进行写入Excel文件,实例如下:代码如下:public void DSToExcel(string Path,DataSet oldds) {//先得到汇总Excel的DataSet 主要目的是获得Excel在DataSet 中的结构string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source ="+path1+";Extended Properties=Excel 8.0" ;OleDbConnection myConn = new OleDbConnection(strCon) ;string strCom="select * from [Sheet1$]";myConn.Open ( ) ;OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom, myConn ) ;ystem.Data.OleDb.OleDbCommandBuilder builder=new OleDbCommandBuilder(myCommand);//QuotePrefix和QuoteSuffix主要是对builder生成InsertComment命令时使用。

ASP.NETCore中使用EPPlus导入出Excel文件的完整步骤

ASP.NETCore中使用EPPlus导入出Excel文件的完整步骤

Core中使⽤EPPlus导⼊出Excel⽂件的完整步骤前⾔这篇⽂章说明了如何使⽤EPPlus在 Core中导⼊和导出.xls/.xlsx⽂件(Excel)。

在考虑使⽤.NET处理excel时,我们总是寻找第三⽅库或组件。

使⽤Open Office Xml格式(xlsx)读取和写⼊Excel 2007/2010⽂件的最流⾏的.net库之⼀是。

这个库现在已经⽀持.NET Core许久了。

这适⽤于Windows,Linux和Mac。

因此,让我们创建⼀个新的 Core WEB API应⽤程序并安装EPPlus.Core。

要安装EPPlus.Core,请在程序包管理器控制台中运⾏以下命令:PM->Install-Package EPPlus.Core或者您可以通过UI界⾯来安装它.⼀切就绪,现在创建⼀个控制器,命名为: ImportExportController ,添加后,让我们编写导出⽅法。

为了⽅便演⽰,我在wwwroot⽂件夹中创建了⼀个excel⽂件,所以我们就需要去获取我们的项⽬的绝对路径。

public class ImportExportController : ControllerBase{private readonly IHostingEnvironment _hostingEnvironment;public ImportExportController(IHostingEnvironment hostingEnvironment){_hostingEnvironment = hostingEnvironment;}}ExcelPackage 在 OfficeOpenXml 命名空间中可⽤的类将⽤于读写xlsx。

定义名为“Export”的新Web api操作⽅法,该⽅法返回⽣成的xlsx⽂件的URL。

所以这是将数据导出到xlsx的完整代码。

其中您需要 using OfficeOpenXml;[HttpGet]public string Export(){string sWebRootFolder = _hostingEnvironment.WebRootPath;string sFileName = @"demo.xlsx";string URL = string.Format("{0}://{1}/{2}", Request.Scheme, Request.Host, sFileName);FileInfo file = new FileInfo(bine(sWebRootFolder, sFileName));if (file.Exists){file.Delete();file = new FileInfo(bine(sWebRootFolder, sFileName));}using (ExcelPackage package = new ExcelPackage(file)){// add a new worksheet to the empty workbookExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Employee");//First add the headersworksheet.Cells[1, 1].Value = "ID";worksheet.Cells[1, 2].Value = "Name";worksheet.Cells[1, 3].Value = "Gender";worksheet.Cells[1, 4].Value = "Salary (in $)";//Add valuesworksheet.Cells["A2"].Value = 1000;worksheet.Cells["B2"].Value = "Jon";worksheet.Cells["C2"].Value = "M";worksheet.Cells["D2"].Value = 5000;worksheet.Cells["A3"].Value = 1001;worksheet.Cells["B3"].Value = "Graham";worksheet.Cells["C3"].Value = "M";worksheet.Cells["D3"].Value = 10000;worksheet.Cells["A4"].Value = 1002;worksheet.Cells["B4"].Value = "Jenny";worksheet.Cells["C4"].Value = "F";worksheet.Cells["D4"].Value = 5000;package.Save(); //Save the workbook.}return URL;}就这样。

ASP读取xls格式的Excel文件

ASP读取xls格式的Excel文件

ASP读取xls格式的Excel文件2011年6月28日ASP12 评论Excel也是一种数据库,跟Access类似,其读取方法也类似。

这里有一个简单的Excel表,文件名字为Excel.xls:咱就这个为例子来说明。

创建Excel连接代码:Dim XlsConn,xrsSet XlsConn=Server.CreateO bject("Adodb.Connection")XlsConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath("Excel.xls")&";Extended Properties=Excel 8.0" 是不是跟连接Access文件很像呢?呵呵~连接创建好了,就可以创建记录集查询Excel里面的数据了。

Set xrs=XlsConn.Execute("Select * From [Sheet1$]")跟其他数据库的查询几乎是一样的,要注意的地方就是表名,Excel里面,默认会有三张表,Sheet1、Sheet2、Sheet3,从上面的例子也可以看到,需要注意查询时表名后面要加“$”符;查询结果:xrs(0)="数据列0"xrs(1)="1"xrs(2)="2"xrs(3)="3"xrs(4)="4"xrs(5)="5"这里有一点需要注意,如果一列中有多行,有的行的值是数字,有的行是字符,ASP去取值的时候数字行会读取出错,是为空的。

所以得想办法把数字行也变成字符型,比如加个’号去,读取出来之后再替换回去。

多行自然是用xrs.Movenext去循环取得了。

够简单吧!最后贴一段代码:Dim rsSet rs=Server.CreateObject("Adodb.Recordset")rs.Open "Select Top 1 * From Pro Where 1=2",Conn,3,2Dim XlsConn,xrsSet XlsConn=Server.CreateO bject("Adodb.Connection")XlsConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath("Excel.xls")&";Extended Properties=Excel 8.0"Set xrs=XlsConn.Execute("Select * From [Sheet1$]")Do While Not xrs.Eofrs.Addnewrs("iClear")= xrs(0)rs("Detail")= xrs(1)rs.Updatexrs.MovenextLoopxrs.Close()Set xrs=NothingXlsConn.Close()Set XlsConn=Nothingrs.Close()Set rs=NothingASP操作xls文件(2005-11-10 14:15:12)转载▼标签:杂谈分类:ASP只写一种方法。

ASP连接excel的方法

ASP连接excel的方法

asp连接Excel的方法一、asp连接Excel的方法与代码:<%dim connxls,connstrxlsconnstrxls="DBQ=d:\newexcel.xls;DefaultDir=;DRIVER={Microsoft Excel Driver (*.xls)};"Set connxls=Server.CreateObject("ADODB.Connection")connxls.Open connstrxlsSet rsxls=Server.CreateObject("ADODB.Recordset")SQLxls = "select * from [new$]"%>注意:写法和连接ACCESS基本相同,不同的是,在调用工作表的时候,不能直接用表名,工作表名后要加$,而且要用“[]”括起来。

二、asp操作Excel的总结:1、建立Excel对象setobjExcelApp=CreateObject("Excel.Application")objExcelApp.DisplayAlerts=false不显示警告objExcelApp.Application.Visible=false不显示界面2、新建Excel文件objExcelApp.WorkBooks.addsetobjExcelBook=objExcelApp.ActiveWorkBooksetobjExcelSheets=objExcelBook.WorksheetssetobjExcelSheet=objExcelBook.Sheets(1)3、读取已有Excel文件strAddr=Server.MapPath(".")objExcelApp.WorkBooks.Open(strAddr&"\Templet\Table.xls")Set objExcelBook=objExcelApp.ActiveWorkBookSet objExcelSheets=objExcelBook.WorksheetsSet objExcelSheet=objExcelBook.Sheets(1)4、另存Excel文件objExcelBook.SaveAsstrAddr&"\Temp\Table.xls"5、保存Excel文件objExcelBook.Save(笔者测试时保存成功,页面报错。

在ASP网页中访问Excel文件

在ASP网页中访问Excel文件

在ASP网页中访问Excel文件在ASP网页中访问Excel文件Excel文件可以作为活动文档(ActiveX Document)在活动文档容器(ActiveX Document Container)中打开,而IE就是一个活动文档容器,所以当页面中的链接指向一个Excel文件时,单击此链接即可启动Excel,最终将文件显示在IE窗口中。

这种方法虽然简单,但存在不少缺陷:客户机内必须安装Excel。

在企业内部网上还有可能做到,但Internet上就不现实了。

访问文档时将启动Excel,速度较慢。

若览器不是IE,则可能不是活动文档容器,因此将不能正确显示文件。

下面介绍一种在ASP文件中通过ADO访问Excel文件的方法。

----ADO是微软发布的基于OLEDB技术的数据库编程接口,通过ODBC驱动程序可以访问多种不同格式的数据文件,其中包括Excel文件。

要获得Excel的ODBC驱动程序,可以通过安装Office97,也可以去微软的站点下载。

正确安装后在控制面板中会出现ODBC数据源管理器,打开它确认在驱动程序页中有Excel的驱动程序。

然后编写Brow.ASP程序,如下例所示。

例中假设在同一目录下有Excel文件01.xls,且包含名为sheet1的工作表,工作表的第一行为列标题,以后为相应的数据。

Brow.asp:程序代码:<%Const adOpenStatic = 3Dim conn Dim rs ,dbPath Set conn = erver.CreateObject("ADODB.Connection") ‘ 生成实际路dbPath=server.MapPath("01.xls") ‘ 驱动程序名称必须与ODBC中的驱动程序名完全一致,包括空格conn.Open "driver={Microsoft Excel Driver (*.xls)};dbq=" & dbPath Set rs = Server.CreateObject("ADODB.Rec ordset") ‘ 在工作表后加上$,同时必须在工作表名外加括号rs.Open "[sheet1$]", conn, adOpenStatic% >< html >< head >< meta http-equiv="Content-Type" content="text/html; charset=gb_2312-80" >< meta name="GENERATOR" content="Microsoft FrontPage Express 2.0" >< title > 浏览Excel数据表< /title >< /head >< body bgcolor="#FFFFFF" >< h2 align="center" >Brow.asp - 浏览Excel数据表< /h2 >< hr >< %Response.Write "< CENTER >< TABLE BORDER=1 >"Response.Write "< TR BGCOLOR=#00FFFF >"Response.WRITE "< TD >编号< /TD >" ‘ 显示每列的标题For i=0 to rs.Fields.Count-1Response.WRITE "< TD >" & rs.Fields(i).Name & "< /TD >"NextResponse.Write "< /TR >" RecNo=1‘ 显示工作表中的所有数据Do While Not rs.EOFResponse.Write "< TR > "Response.Write "< TD >" & RecNo & "< /TD >"‘显示各列的数据For i=0 to rs.Fields.Count-1Response.WRITE "< TD >" & rs.Fields(i).Value & "< /TD >"NextResponse.Write "< /TR >"rs.MoveNext RecNo=RecNo+1 LoopResponse.Write "< /TABLE >< /CENTER >"% >< hr > < /body > < /html >ODBC 将指定的工作表的第一行各列的内容识别成字段名,以下各行作为相应的数据,若打开的工作表中数据将没有按此规律出现,则需要指定范围。

Aspose.cells读取Excel表中的图片问题

Aspose.cells读取Excel表中的图片问题

Aspose.cells读取Excel表中的图⽚问题⼀、说明本⽂主要是讲解,怎么使⽤aspose.cells读取Excel表中的图⽚,并把图⽚转换成流或是image对象。

⼆、开发环境说明开发⼯具vs2012,c#语⾔,三、Aspose.cells读取Excel数据表中图⽚的代码1//Excel表的路径2string path = Application.StartupPath + @"\excel\⽤地调查摸底表.xlsx";3//winform窗体上的按钮事件4private void button2_Click(object sender, EventArgs e)5 {6 Workbook book = new Workbook(path);7 Worksheet sheet = book.Worksheets[0];8//aspose.cells 从Excel数据表中读取的图⽚存放在sheet.Pictures[0]中,前提是Excel中只有⼀张图⽚,有多张//图⽚遍历即可9this.pictureBox1.Image = ChangeToImage(sheet.Pictures[0]);10 }11//把Aspose.Cells.Drawing.Picture对象转换为Image对象12private Image ChangeToImage(Aspose.Cells.Drawing.Picture pic)13 {14 ImageOrPrintOptions printOption = new ImageOrPrintOptions(); //图⽚格式15 printOption.ImageFormat = pic.ImageFormat;16 MemoryStream mstream = new MemoryStream();1718 pic.ToImage(mstream, printOption); // 保存(参数为:内存流和图⽚格式)19 Bitmap img = new Bitmap(mstream);20return img;21 }View Code四、读取的图⽚转换为流1private MemoryStream ChangeToStream(Aspose.Cells.Drawing.Picture pic, ref )2 {3 ImageOrPrintOptions printOption = new ImageOrPrintOptions(); //图⽚格式4 printOption.ImageFormat = pic.ImageFormat;5 MemoryStream mstream = new MemoryStream();6 pic.ToImage(mstream, printOption); // 保存(参数为:内存流和图⽚格式)7return mstream ;8 }。

ASP.NET之Excel下载模板、导入、导出操作

ASP.NET之Excel下载模板、导入、导出操作

之Excel下载模板、导⼊、导出操作本⽂介绍了下Excel下载模板、导⼊、导出操作,供⼤家参考,具体内容如下1.下载模板功能protected void btnDownload_Click(object sender, EventArgs e){var path = Server.MapPath(("upfiles\\") + "test.xlt"); //upfiles-⽂件夹 test.xlt-⽂件var name = "test.xlt";try{var file = new FileInfo(path);Response.Clear();Response.Charset = "GB2312";Response.ContentEncoding = System.Text.Encoding.UTF8;Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(name)); //头信息,指定默认⽂件名Response.AddHeader("Content-Length", file.Length.ToString());//显⽰下载进度Response.ContentType = "application/ms-excel"; // 指定返回的是⼀个不能被客户端读取的流,必须被下载Response.WriteFile(file.FullName); // 把⽂件流发送到客户端pleteRequest();}catch (Exception ex){Response.Write("<script>alert('错误:" + ex.Message + ",请尽快与管理员联系')</script>");}}2.导⼊数据Excel数据导⼊到数据库中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.ASP对Excel的基本操作(1) 建立Excel对象创建Excel对象可以通过下面的代码来实现:<%set objExcelApp = CreateObject("Excel.Application") objExcelApp.DisplayAlerts = false '不显示警告objExcelApp.Application = false '不显示界面%>(2) 新建Excel文件新建Excel文件可以通过以下代码来实现:<%objExcelApp.WorkBooks.addset objExcelBook = objExcelApp.ActiveWorkBookset objExcelSheets = objExcelBook.Worksheetsset objExcelSheet = objExcelBook.Sheets(1)%>(3) 读取已有的Excel文件读取已有的Excel文件可以通过下面的代码来实现<%strAddr = Server.MapPath(".")objExcelApp.WorkBooks.Open(strAddr & "TempletTable.xls") set objExcelBook = objExcelApp.ActiveWorkBookset objExcelSheets = objExcelBook.Worksheetsset objExcelSheet = objExcelBook.WorkSheets(1)%>(4) 另存Excel文件另存Excel文件可以通过以下代码来实现<%objExcelBook.SaveAs strAddr & "templateTables.xls"%>(5) 保存Excel文件保存Excel文件可以通过以下代码来实现:<%objExcelBook.Save%>(6) 退出Excel操作<%objExcelApp.Quit '一定要退出set objExcelApp = nothing%>2 读取Excel文件的实例<%set xlApp = server.CreateObject("Excel.Application")strsource = server.MapPath("xl.xls")set xlbook = xlApp.WorkBooks.Open(strsource)set xlsheet = xlbook.Worksheets(1)i = 1response.write "<table>"while xlsheet.cells(i,1) <> ""response.write "<tr>"response.write "<td>" & xlsheet.Cells(i,1) & "</td>"response.write "<td>" & xlsheet.Cells(i,2) & "</td>"response.write "<td>" & xlsheet.Cells(i,3) & "</td>"response.write "<tr>"i = i + 1wendresponse.write "</table>"set xlsheet = nothingset xlbook = nothingxlApp.quit'千万记住要加这一句,否则每运行一次你的机器里就增加一个Excel进程,而且无法释放'set xlApp = nothing 是不行的%>================================================================ 3.怎样将数据从Excel导入到SQL Server中(1)<%sub dataIntoSqlServer_ceritificate(strFileName,strSheetName,myConn)dim myConnectiondim strNamedim rsXsl,rsSqldim myConn_Xsldim cmddim i,jdim maxIdstrName = strFileNameset myConnection = Server.CreateObject("ADODB.Connection")set rsXsl = Server.CreateObject("ADODB.Recordset")set rsSql = Server.CreateObject("ADODB.Recordset")set cmd = server.CreateObject("mand")cmd.ActiveConnection = myConnmyConn_Xsl = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strName & _ ";Extended Properties=Excel 8.0"'打开连接myconnection.open myConn_Xsl'打开表str_Xsl = "select * from [" & strSheetName & "$]"rsXsl.open str_Xsl,myconnection,1,1j = 1Do while not rsXsl.eof'取出最大值str_sql = "select Max(id) as maxId from exceltosql"rsSql.open str_Sql,myConn,1,3if Not rsSql.eof thenif not isNull(rsSql("maxId")) thenmaxId=CLng(rsSql("maxId")) + 1elsemaxId = 1end ifelsemaxId = 1rsSql.close '//关闭对象'加入数据库str_Sql = "insert into exceltosql values(" & maxId&",'"&rsXsl(1)&"','" & rsXsl(2)&"')"mandText = str_Sqlcmd.Excute()''''''''''''''''''''''''''''''''''''''''''j = j + 1rsXsl.moveNextloopresponse.write "共导入" & j_1 & " 条记录.<br>"response.write "<a href=# onclick='self.close();'>关闭窗口</a>"set rsXsl = nothingset rsSql = nothingset myconnection = nothingset cmd = nothingend sub(2)'调用方法<%file1 = "c:\excelexample.xls"myconn = "DRIVER={SQLSERVER};SERVER=(local);uid=sa;pwd=sa;DATABASE=aspbook" dataIntoSqlServer_ceritificate file1,"sheet1",myconn%>=================================================================== ==========4.ASP操作Excel技术总结目录一、环境配置二、 ASP对Excel的基本操作三、 ASP操作Excel生成数据表四、 ASP操作Excel生成Chart图五、服务器端Excel文件浏览、下载、删除方案六、附录正文一、环境配置服务器端的环境配置从参考资料上看,微软系列的配置应该都行,即:1.Win9x+PWS+Office2.Win2000 Professional+PWS+Office3.Win2000 Server+IIS+Office目前笔者测试成功的环境是后二者。

Office的版本没有特殊要求,考虑到客户机配置的不确定性和下兼容特性,建议服务器端Office版本不要太高,以防止客户机下载后无法正确显示。

服务器端环境配置还有两个偶然的发现是:1.笔者开发机器上原来装有金山的WPS2002,结果Excel对象创建始终出现问题,卸载WPS2002后,错误消失。

2.笔者开发ASP代码喜欢用FrontPage,结果发现如果FrontPage打开(服务器端),对象创建出现不稳定现象,时而成功时而不成功。

扩展考察后发现,Office系列的软件如果在服务器端运行,则Excel对象的创建很难成功。

服务器端还必须要设置的一点是COM组件的操作权限。

在命令行键入“DCOMCNFG”,则进入COM组件配置界面,选择Microsoft Excel后点击属性按钮,将三个单选项一律选择自定义,编辑中将Everyone加入所有权限。

相关文档
最新文档