winform读取excel文件(c# 读取excel文件)
本文目录
- c# 读取excel文件
- c# winform 中导入Excel 的问题 !
- C#如何实现读取和显示excel表格中的数据
- c#如何在winform中打开一个excel文档呢
- .net winform怎么获取excel中单元格的值
- 怎样用C#读取Excel文件
- 如何用winform向excel中插入数据,就好像把excel当作数据库是一样的,我只会BS的 CS不会写 求教
- C#Winform怎么将excel一列数据导入程序中
- C# 读取EXCEL文件的三种经典方法
c# 读取excel文件
在C#代码中,spire提供了可通过文档格式转换的方法,将excel文件内容读取到.txt文档,代码如下:
using Spire.Xls;
namespace Excel_to_Txt
{
class Program
{
static void Main(string args)
{
Workbook workbook = new Workbook();
workbook.LoadFromFile(@"..\ExceltoTxt.xls");
Worksheet sheet = workbook.Worksheets;
sheet.SaveToFile("ExceltoTxt.txt", " ", Encoding.UTF8);
}
}
}
c# winform 中导入Excel 的问题 !
导入命名空间:using System.Data.OleDb; OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + FilePath + ";Extended Properties=Excel 8.0;"); conn.Open(); string strExcel = ""; OleDbDataAdapter myCommand = null; strExcel = string.Format("select * from ", comboBox1.Text); myCommand = new OleDbDataAdapter(strExcel, "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + FilePath + ";Extended Properties=Excel 8.0;"); myCommand.Fill(ds, comboBox1.Text);Filepath为选择的excel文件本地路径
C#如何实现读取和显示excel表格中的数据
读取Excel首先你在引用中得引用Microsoft office Excel 20** 对应的dll文件,才能读取到Excel的数据\x0d\x0a在类里面引用:System.Data.OleDb;\x0d\x0a\x0d\x0astatic public DataSet ExcelToDataSet(string filename)\x0d\x0a {\x0d\x0a DataSet ds;\x0d\x0a string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" +\x0d\x0a "Extended Properties=Excel 8.0;" +\x0d\x0a "data source=" + filename;\x0d\x0a OleDbConnection myConn = new OleDbConnection(strCon);\x0d\x0a string strCom = " SELECT * FROM ";\x0d\x0a myConn.Open();\x0d\x0a OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);\x0d\x0a ds = new DataSet();\x0d\x0a myCommand.Fill(ds);\x0d\x0a myConn.Close();\x0d\x0a return ds;\x0d\x0a }\x0d\x0a这个方法返回一个数据读取的数据原给你的datagridview
c#如何在winform中打开一个excel文档呢
下载一个DsoFramer.ocx,然后用regsvr32 path\DsoFramer.ocx注册一下,path指dsoframer.ocx的路径。在vs.net 工具栏中添加这个com组件。将控件拖到窗体上,用组件的CreateNew方法可能从模板或通过"Excel.Sheet"创建Excel工作表了。你还可通过组件的getApplication方法得到服务器,对工作表进行任意操作。
.net winform怎么获取excel中单元格的值
DataSet ds; string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Extended Properties=Excel 8.0;" + "data source=" + filename; OleDbConnection myConn = new OleDbConnection(strCon); string strCom = " SELECT * FROM "; myConn.Open(); OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn); ds = new DataSet(); myCommand.Fill(ds); myConn.Close();这下你就可以去ds里面读取你要的值了。这样做其实不是太好,有个组件NPOI你可以用这个读取
怎样用C#读取Excel文件
命名空间:using System.Data.OleDb;
另注:
参数:HDR=NO/YES
OleDb读入一个Excel工作表(Sheet)的数据后,工作表的第一行会变成标题,第二行起,逐行变为DataTable的一个数据行(Row)
以下是代码:
//根据excle的路径把第一个sheel中的内容放入datatable public static DataTable ReadExcelToTable(string path)//excel存放的路径 { try { //连接字符串 string connstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=’Excel 8.0;HDR=NO;IMEX=1’;"; // Office 07及以上版本 不能出现多余的空格 而且分号注意 //string connstring = Provider=Microsoft.JET.OLEDB.4.0;Data Source=" + path + ";Extended Properties=’Excel 8.0;HDR=NO;IMEX=1’;"; //Office 07以下版本 using (OleDbConnection conn = new OleDbConnection(connstring)) { conn.Open(); DataTable sheetsName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object { null, null, null, "Table" }); //得到所有sheet的名字 string firstSheetName = sheetsName.Rows.ToString(); //得到第一个sheet的名字 string sql = string.Format("SELECT * FROM ", firstSheetName); //查询字符串//string sql = string.Format("SELECT * FROM is not null", firstSheetName); //查询字符串OleDbDataAdapter ada = new OleDbDataAdapter(sql, connstring); DataSet set = new DataSet(); ada.Fill(set); return set.Tables; } } catch (Exception) { return null; } }
项目中还可以结合流文件(fileStream)的操作,检查每一行数据,数据类型等,一行一行的插入到DB的表,使用DataTable的目的就是为了检查excel的行列数(主要是列数)是否符合要求,比如今天的测试中,
网友有个说法:string sqlExcel = ("select * from "); sheet$后面是范围A3到D8的 如果行不确定 要取到后面行 就把D8改成D
后来看到的,所以还没测试,
以上这个问题我也在想,是不是excel里面sheet的活动界面的问题,select * from 选取了所有的列数,所以导致可能DaTaTable导致空列,建议在DaTaTable进行删改,或者用datagrid修改,随后保存修改到DATATABLE中。
***隐藏网址***
另外对于参数connstring字符串的标准,
1)HDR表示要把第一行作为数据还是作为列名,作为数据用HDR=no,作为列名用HDR=yes;
使用 Excel 工作簿时,默认情况下,区域中的第一行是标题行(或字段名称)。如果第一个区域不包含标题,您可以在连接字符串的扩展属性中指定 HDR=NO。如果您在连接字符串中指定 HDR=NO,Jet OLE DB 提供程序将自动为您命名字段(不管excel中的列叫什么名字,F1 表示第一个字段,F2 表示第二个字段,依此类推,select F1,F2 from );
2)IMEX=1将所有读入数据看作字符,其他值(0、2)请查阅相关帮助文档;
3)如果出现“找不到可安装的isam”错误,一般是连接字符串错误
string connstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=’Excel 8.0;HDR=NO;IMEX=1’;";
HDR表示要把第一行作为数据还是作为列名,作为数据用HDR=no,作为列名用HDR=yes;
string connstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=’Excel 8.0;HDR=YES;IMEX=1’;";
接着继续:
这里出现的问题是:
很容易造成读入很多的空行到datatable中,比如下面的excel,我们基本上看不出到底有多少实际的行数:
string sql = string.Format("SELECT * FROM ", firstSheetName); //查询字符串
string sql = string.Format("SELECT * FROM is not null", firstSheetName); //查询字符串,字段名注意一定要和excel中标题名一致,有空格哦~
note:这时HDR参数必须是YES,否则会报异常
***隐藏网址***
Excel读取存在空白的原因:表格有两个后台属性,分别是已使用的最大行数和已使用的最大列数。这个 adapter可能是按这两个属性来的,没法改。读取代码部分如图所示,图示为主要解析Excel到DataTable.经过仔细监视代码我们会发现在 da.Fill(dt)时,把空白行填充到DataTable了。总体来讲这个是有微软提供的方法和规则,那么是没办法改的。
解决办法有以下几个:
1、在读取的时候SQL语句上进行过滤:Select * From SheetName where col1 is not null and col2 is not null 在读取的过程时,对空白行进行非空顾虑,建议过滤非空时,根据业务,把不可为空的Excel中的列作为col1和col2;当然可以先删除空白行后再进行 读取;总之先把空白行在读取到Excel前除掉;
2、在读取Excel到DataTable后再过滤掉空白行;DataTable空白行处理空白行方法应该很多的;但是在进行业务校验的时候一定需要先删除空白行!
如何用winform向excel中插入数据,就好像把excel当作数据库是一样的,我只会BS的 CS不会写 求教
这里我用了Execl.dll的方式导出,不过这种方式用很大的弊端...貌似要根据office版本来确定引用的类...ps:我也不太明白第一步引用命名空间关于这个命名空间晚上的资料多大直接都写的是using Excel;private void doExport(DataTable dt, string strSheetName) { Excel.Application excel = new Excel.Application(); //Execl的操作类 //读取保存目标的对象 Excel.Workbook bookDest = (Excel.WorkbookClass)excel.Workbooks.Add(Missing.Value); Excel.Worksheet sheetDest = bookDest.Worksheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value) as Excel.Worksheet;//给工作薄添加一个Sheet sheetDest.Name = strSheetName;//自己定义名字O(∩_∩)O哈哈~ int rowIndex = 1; int colIndex = 0; excel.Application.Workbooks.Add(true);//这句不写不知道会不会报错 foreach (DataColumn col in dt.Columns) { colIndex++; sheetDest.Cells = col.ColumnName;//Execl中的第一列,把DataTable的列名先导进去 } //导入数据行 foreach (DataRow row in dt.Rows) { rowIndex++; colIndex = 0; foreach (DataColumn col in dt.Columns) { colIndex++; sheetDest.Cells.ToString(); } } bookDest.Saved = true; bookDest.SaveCopyAs("要保存的文件路径+文件名.xls");//方式一 excel.Quit(); excel = null; GC.Collect();//垃圾回收 }
C#Winform怎么将excel一列数据导入程序中
我这个是导入到DataGridView希望对你有用。 private void btImport_Click(object sender, EventArgs e) { try { lbmation.Visible = true; dgvWayBill.Columns.Visible = false; string strFileNamePath = string.Empty; OpenFileDialog ofdShowDialog = new OpenFileDialog(); ofdShowDialog.FileName = ""; ofdShowDialog.Title = "请选择要导入的Excel文件,导入EXCEL文件的工作表名必须是Sheet1"; ofdShowDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); ofdShowDialog.Filter = "Excel文件(*.xls)|*.xls"; ofdShowDialog.CheckFileExists = true; ofdShowDialog.CheckPathExists = true; if (ofdShowDialog.ShowDialog() == DialogResult.OK) strFileNamePath = ofdShowDialog.FileName; if (string.IsNullOrEmpty(strFileNamePath)) { MessageBox.Show("请选择要导入的文件", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } string strFileName = "Sheet1"; OleDbDataAccess odaData = new OleDbDataAccess(strFileNamePath); DataSet dsImport = new DataSet(); dsImport = odaData.ReadExcelData(strFileName); if (DataSetUtil.IsNull(dsImport) || DataTableUtil.IsNull(dsImport.Tables)) return; DataBind(dsImport); MessageBox.Show("导入成功", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); lbmation.Visible = false; } catch (Exception ex) { MessageBox.Show("导入失败,失败原因:" + ex.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Error); } } //导入数据放到DataDridView中 private void DataBind(DataSet dsImport) {//这里你想将数据放到哪个控件里去就直接将数据源设置为dsImport.table就可以了。}
C# 读取EXCEL文件的三种经典方法
可采用Spire.XLS类库读取Excel文件,代码简洁易懂,方法灵活多样,比如可以读取Excel文档的全部或部分单元格数据到datatable,也可以通过判断单元格类型来读取对应的数据。读取到datatable://加载Excel文档Workbook workbook = new Workbook();workbook.LoadFromFile(@"F:\ExportData.xlsx");//获取第一张sheetWorksheet sheet = workbook.Worksheets;//设置读取的range范围CellRange range = sheet.Range;//读取到datatableDataTable dt = sheet.ExportDataTable(range, true, true);
更多文章:
网络模块图片(家里的弱电箱里面有一个带一个in和4个out接口的网络模块,请问怎么连接才能使两台电脑同时上网)
2024年7月21日 09:57
ppt模板背景图片简约(职场中如何设计出一份简约型的PPT封面)
2023年9月18日 21:40
git可视化工具(sourcetreeGit可视化操作安装失败出现的状况)
2024年6月25日 05:21
计算器逻辑运算(计算机中进行算术运算和逻辑运算的主要部件是)
2024年7月26日 00:15
html里header是啥意思(header(“Contenttype:text/htmlcharset=utf-8“)什么意思)
2024年6月24日 03:09
vagrant歌曲是什么风格(vagrant这首歌是不是写给lol亚索和瑞文的)
2024年8月21日 08:01
在线转换pdf转word(3种快速在线将PDF转换成Word(Doc)格式文件文档方法)
2024年7月22日 20:50
bootcamp翻译(《三角洲4》的一些英文希望英语大侠们帮我翻译一下!希望英语和汉语一一对应,顺序别乱了谢谢了!)
2024年4月12日 16:25
失眠图片带字可爱图片(昨晚失眠,今晚睡早一点的图片及优美句子)
2024年7月13日 06:16
集合的tostring方法(为什么直接打印java集合对象打印出来的不是哈希码,而是里面存储值)
2024年9月1日 01:45