C#项目遇到的obstacle和tip
跟着老师做项目,小渣渣的我学习ing
JIngles123
生命不息,奋斗不止
展开
-
Microsoft.ACE.OLEDB.12.0未注册,AccessDatabaseEngine安装时闪退可能的原因
先剧透一下,安装机子的系统为windows10英文版。今天,由于对方机子更换的原因,我们需要将所有内容重新装一遍,其中出现了一个问题,即在界面导入excel不成功,这个问题之前出现过,但是时间久了,我也有点忘记了,还好老师还记得,说是对方机子没有安装Microsoft.ACE.OLEDB.12.0的原因。于是,我们把之前装过的这个安装包装到这个机子上,发现一点击安装运行就闪退,当然,网上的很多方法都试过了,在我这里就是没有用。很愁,最后老师说这个问题可能是因为对方系统为英文版本,而之前我们安装的机子为中原创 2021-12-30 22:01:21 · 4968 阅读 · 0 评论 -
C#使用NPOI使用现有的图片向excel单元格指定位置插入图片,亲测有效
要生成条形码并保存到本地的,链接上一篇:https://blog.csdn.net/qq_40467670/article/details/120278050 if (!col3.Equals("")){ //在单元格中放入条形码 byte[] bytes = System.IO.File.ReadAllBytes(fileSavePath.ToString()); int pictureIdx = workbook.AddPicture(bytes, PictureType.JPEG)原创 2021-09-14 10:40:47 · 3529 阅读 · 1 评论 -
C#通过Barcode生成条形码,并保存在当前目录的文件夹中,亲测有效
项目里最近需要在生成的报表中插入条形码,而条形码需要程序自己生成,在网上经过搜索及自己尝试自己之后,终于将问题解决,要解决这个问题,我是分两步来将它完成的。第一步:生成对应的条形码,并把它们放在指定的文件夹中第二步:在系统预生成的excel文件的某个指定的单元格中第三步:将之前已生成好的条形码插入其中现在,我先解决前两个问题,要解决这个问题,在网上有很多的方法,我这里只记录自己尝试过,并成功的内容。首先,需要下载这个条形码生成需要的相关dll引用,我在这里先放上这个dll链接,链接:https:/原创 2021-09-14 10:14:19 · 1607 阅读 · 0 评论 -
C# Extended Properties=\“Excel 12.0;HDR=YES;IMEX=1导入excel不能正确读取数据
ADO.NET读取Excel数据时,发现有的数据读出来为空,有的数据可以正确读取。为此,打开excel表格,发现有的读不出是因为加入了除去数字之外的其他字符,网上了好些内容,最后才搜出来问题的原因,及其解决的方法。如下:先了解下HDR和IMEX:1、HDR=YES表示excel的第一行为标题行,不把它作为数据使用,因此,如果HDR的值设为NO,则说明第一行不是标题行,作为数据使用。系统默认是YES。参数Excel 8.0 对于Excel 97以上到2003版本都用Excel 8.0,2007或2010原创 2021-08-31 20:06:03 · 2629 阅读 · 0 评论 -
C# datagridview显示内容,三角图标不出现的原因
在此之前,先明确一点,在datagridview每行的最左边,会出现的两种符号。一种是*号,这代表当前行处于编辑及修改状态;另一种是实心黑色小三角符号,这代表选中当前行,只有这样,我们在项目中才能对当前行进行处理,否则,读不到当前行current row。这两天,我们也遇到了这个问题,我们的目的不是想让三角符号出现,而是想要找出它不出现的原因。由于这一部分功能代码是老师写的,他很清楚自己并没有做什么特别的设置,在网上也找了很多,发现并不是我们想要的答案。but,我们老师做项目超厉害的,一点没夸张。我原创 2021-08-12 13:18:30 · 1239 阅读 · 0 评论 -
C#导入文件时,判断文件是否已经打开
判断是否打开的函数如下:public bool IsFileOpened(string file){bool result = false;try{FileStream fs = File.OpenWrite(file);fs.Close();}catch (Exception e){result = true;}return result;}得到的结果如下:如果文件是.txt .log .dat 则文件是否打开都显示 false;如果文件是.doc .xls .csv原创 2021-08-07 17:11:41 · 3332 阅读 · 2 评论 -
C# datatable增加一列,并赋值
sql = "select plandate as 日期,number as 数量,num1 as 开始编号,pipeline as 流水编号,dayornight as 白晚班1,AorS as 层区名称,description as 说明 from gq_sec where factory='" + f.current_factory + "'and gq_pri_id=" + id + " and diff=0 order by 日期 desc";MySqlDataAdapter comm = ne原创 2021-08-02 12:42:47 · 9426 阅读 · 0 评论 -
C#手动为comboBox添加元素
DataTable iiii = new DataTable();iiii.Columns.Add("Text");//显示值iiii.Columns.Add("Value");//实际值DataRow dr1 = iiii.NewRow();DataRow dr2 = iiii.NewRow();dr1["Text"] = "难";dr1["Value"] = "难";dr2["Text"] = "易";dr2["Value"] = "易";iiii.Rows.Add(dr1);iii原创 2021-07-20 19:57:03 · 4142 阅读 · 0 评论 -
C#中为控件添加事件时提示“ dataGridView1_CellValidating”没有与委托“DataGridViewCellEventHandler”匹配的重载
遇到的问题描述:在xxx.designer.cs和xxx.cs中分别手动添加了函数和其定义,注意,是我自己一个一个敲代码敲进去的。结果编译时就没通过,提示问题如下:在网上搜了一大圈,都找不到符合我意思的解决方案,后来在一个某知道上发现了一点线索,试了一下,将问题解决,故此记录。解决方案:1、点击需要添加事件的控件2、点击属性中断的事件,如图所示。3、双击自己所需要的事件,同时,在后面的栏框中该可以对函数的名称改名,让你程序的可读性会有提升哦。像我,需要的就是双击CellValidating,原创 2021-07-13 11:17:25 · 1230 阅读 · 0 评论 -
C#为控件添加事件程序
C#中的控件,有时候,需要一些事件触发操作。对于一些极其很菜的小菜鸟来说,一个小小的问题,都要搞好久,更何况有的还不太好搜,比如说我。hahaha目标:双击datagridview上的条目内容,出现另一个提示框已做的工作:在网上找到了这一个事件的函数名是怎么用的,并且把它复制到了我的项目里。代码如下所示,然鹅直接运行没有出现效果。private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e原创 2021-07-12 17:32:56 · 1284 阅读 · 0 评论 -
C#清空datagridview上的所有数据
注意点:只是删除界面上的数据部分,列名部分不会删除,此外,如果原本数据为null的话,执行代码会出错,因为不能对已空的数据表再进行删除操作。DataTable dt = (DataTable)dataGridView1.DataSource;dt.Rows.Clear();dataGridView1.DataSource = dt;...原创 2021-07-02 11:32:10 · 5837 阅读 · 2 评论 -
C# datatable和datagridview之间数据的相互存放
C#winform中,经常要从datagridview界面上获取数据来作处理。同样的,有时候,我们也需要将数据先放到datatable中,进而再让其在datagridview上显示。由于不熟练,反应经常很慢,或者脑子转不过来,故此,记录下来。将dataGridView1上的数据源放入到datatable中,其中对a中数据的引用如第二句所示。DataTable a = (DataTable)dataGridView1.DataSource;string mm = a.Rows[dataGridView1原创 2021-07-01 22:44:58 · 5300 阅读 · 0 评论 -
C#设置保存文件SaveFileDialog类的默认文件名
先放上效果图:在C#中使用SaveFileDialog类保存文件时候,出现默认的文件名,代码如下:SaveFileDialog s1 = new SaveFileDialog();s1.Title = "保存Excel文件";s1.Filter = "Excel文件(*.xls)|*.xls";s1.FilterIndex = 1;s1.FileName = "你好";//这里是keyif (s1.ShowDialog() == DialogResult.OK) filePath = s1.原创 2021-06-27 23:10:44 · 5805 阅读 · 0 评论 -
C#从上次导入文件的位置继续导入,附C#写入、读出txt文件
之前一直纠结,怎么实现这一问题,搜了很多,又想到把本次的读取文件的路径放到txt中,每次从中取查找,从而实现这个目的。后来的后来,发现我确实想多了,不去做什么处理,就可以实现。但是,毕竟都找了很多写入及读出文件的方式,故此,也记录下。导入excel文件,注释掉其中一行即可,否则,每次就指定从这个路径下开始:OpenFileDialog file = new OpenFileDialog();file.Filter = "Excel文件|*.xls;*.xlsx;*.xlsm|所有文件|*.*";原创 2021-06-26 21:42:23 · 446 阅读 · 0 评论 -
C#导入文件时同时可选多种不同后缀的文件,使用Filter过滤
之前,老师说要在界面导入excel文件,而excel文件的后缀有不少,最开始的我们是一个类型一个文件下拉选项的来实现。但换做用户的角度,这样显然是麻烦的,故此,老师提出建议,在一个下拉选项中放入多个不同类型的文件,另一个选项就是绝对少不了的所有文件。由于我在网上搜了好久才搜出点东西来,也许是我搜索能力太low,就把它记下来,重新规整下,附上几行代码和效果图,就一目了然了,留一下两者的区别即可,看看哪一种更符合我们常规的使用和操作:方式一:一个选项一个类型//打开文件OpenFileDialog fi原创 2021-06-25 22:13:50 · 3341 阅读 · 1 评论 -
VS2015及2010 通过Nuget安装所需的引用组件
今天,把自己机子上的项目程序迁移到老师的机子上,由于项目所在的环境发生了变化,其中的一些引用对方机子可能没有,这会导致其中的一些找不到,从而使得整个项目无法正常运行。其中,有的一些引用,发给了老师,问题解决,但是,还有一些,时间久了,自己也找不大到放在哪里了。于是找了个,还不大对,总之问题没解决好。后来发现,干脆直接简单粗暴,让老师自己装去算了,省事儿。当然,我还是得客气点,认真的在网上搜搜怎么在vs下搜索安装引用的组件。由于老师机子上有vs2010的,也有vs2015的,我自己机子是2015的。故此,原创 2021-06-24 17:41:53 · 409 阅读 · 0 评论 -
C# NPOI写excel文件,设置某个单元格为自动筛选
如标题所示,附上几行代码:HSSFWorkbook workbook = new HSSFWorkbook();//创建工作表var sheet = workbook.CreateSheet("信息表");//设置excel的自动筛选//CellRangeAddress c1 = CellRangeAddress.ValueOf("B5");//设置过滤范围为B5单元格//CellRangeAddress c1 = CellRangeAddress.ValueOf("B5:Q5");//设置过原创 2021-06-22 10:51:42 · 861 阅读 · 1 评论 -
C#获取当前datagridview界面上的内容,并填充到datatable,判断是否为空或者,行数是否为0
几行程序如下:DataTable ds = new DataTable();//获取当前datagridview界面上的内容,并填充到datatableds = (DataTable)dataGridView1.DataSource;if (ds == null) MessageBox.Show("列表没有数据,不允许另存为!");if (ds.Rows.Count == 0) MessageBox.Show("列表没有数据,不允许另存为!");...原创 2021-06-21 18:04:21 · 913 阅读 · 0 评论 -
C#导入excel文件,获取所有Sheet表名,并查找满足条件的Sheet名
如题,在项目中导入excel文件时,往往只对其中的某个sheet表进行读取,或指定的某几个sheet表进行处理。我的要求:导入excel文档,寻找有无名为5L的表,没有则找有无Sheet1的表,没有,则提示不存在正确命名的表或表不存在的提示框。代码如下:目标函数中的主要代码如下:OpenFileDialog file = new OpenFileDialog();file.Filter ="Excel(*.xlsx)|*.xlsx|Excel(*.xlsm)|*.xlsm|Excel(*.*)|*.原创 2021-06-21 16:22:39 · 2852 阅读 · 0 评论 -
C#中创建含有结构体的哈希,并根据value找到key
在C#项目中创建一个结构体,并将其作为value,依次放入一个哈希表中。具体内容如下:struct Eff{ public double fact; public double plan; public string machinetype;};sql1 = "select ce_users.machinetype,machineorder,expectedeff from ce_users inner join ex_eff on ce_users.machinetype=ex原创 2021-06-18 22:47:31 · 670 阅读 · 0 评论 -
C#导入excel文件,捕捉到的异常为“外部表不是预期的格式。”
**问题:**由于多个excel表中,所用数据的单元格中英状态下混用,导致某些应有的结果得不到。故此,我全部替换excel中的括号使其统一,在保存时,提示“某些单元格具有交迭的条件格式区域。早期版本的excel将无法评估交迭单元格上的。。。”内容,如图所示。然鹅,我并没考虑这么多,生硬保存。再次导入,出现异常。原因:在早期版本的 Excel 中,并非所有新功能都受支持。当你在兼容性模式下工作或希望将工作簿保存为 Excel 97-2003 (.xls) 文件格式时,兼容性检查器可帮助你识别可能会在早期原创 2021-06-15 22:40:12 · 2449 阅读 · 1 评论 -
C#中为什么删除List1的一个元素,List2的也跟着删除了
今天遇到一个问题,如题所示,几行代码如下:函数:private string search(Hashtable ht, Hashtable ht1,int num,string s,string date,double xl)其中,问题操作代码如下:List<string> list1 = new List<string>();List<string> list2 = new List<string>();list1 = (List<stri原创 2021-06-13 21:37:30 · 654 阅读 · 0 评论 -
VS执行项目提示报错“未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序”的解决办法
如图所示,在vs中执行C#项目,跳出来个这么个错误,之前运行还不存在这个问题,后来,不知道干了啥,问题就出来了。老师果然还是资深老练,向老师请教了之后,解决方案如下:思路:确定当前的这个项目在64位的机子上运行还是在32位的机子上运行。这里我统一是在64位的机子上运行。1、从网上下载AccessDatabaseEngine_X64.exe,网址不给出了,由于我之前下载过,这里直接给出能用的百度盘,自己去拿好了。链接:https://pan.baidu.com/s/1U6HB5-NJC05cdvGbF.原创 2021-05-30 15:54:37 · 2650 阅读 · 1 评论 -
C#在指定文件路径下创建文件夹
//jinstring sPath = "C:\\Users\\10506\\Desktop\\备份";if (!Directory.Exists(sPath)) Directory.CreateDirectory(sPath);//创建路径//注意要添加引用。using System.IO;//需要引用的程序集其中较为常用的方法如下://Directory类为用于创建、移动和枚举目录和子目录的实例方法,其命名空间为System.IO。Directory.Exists("d:\\.原创 2021-05-13 13:12:56 · 8543 阅读 · 0 评论 -
C#用filestream保存文件到本地的两种方式+获取本机桌面路径
//1、默认保存到指定的位置,文件名+当前系统时间后缀string strTime = System.DateTime.Now.ToString("yyyyMMddHHmm");//设置时间格式string path = "C:\\Users\\10506\\Desktop\\信息表_"+strTime+".xls";FileStream file = new FileStream(path, FileMode.CreateNew, FileAccess.Write);workbook.Write(原创 2021-05-11 17:03:42 · 6839 阅读 · 0 评论 -
C#用filestream以系统时间为名称保存到本地
代码只有几行,但是因为不懂行当,搜了好久还是没找到适合的办法,要不用的不是filestream,要不就是文件路径设置的不对。后来,老师的一句话终于告诉了我问题所在,果然,我要学习和了解的东西还有很多很多。代码只有几行,先放上去: //默认保存到指定的位置,文件名+当前系统时间后缀 string strTime = System.DateTime.Now.ToString("yyyyMMddHHmm");//设置时间格式 string path = "C:\\Users\\10506\\Desk原创 2021-05-11 16:57:56 · 758 阅读 · 0 评论 -
C#中NPOI写完workbook保存到本地
用NPOI写成一个workbook之后,拿来切实使用,需保存到本地,在整个过程中,我从最开始的只能保存到指定的本地位置及指定的文件名。到后来的可以自选路径及自己输入文件名。还是记录一下,方便以后使用,省的另外再找。附上一个较为完整的实例,从写workbook到保存,整个过程:https://blog.csdn.net/qq_40467670/article/details/1164957351、保存到固定位置及固定文件名 FileStream file = new FileStream(@"C:原创 2021-05-07 16:16:04 · 3180 阅读 · 0 评论 -
C#NPOI将gridview内容写到excel,添加表头表尾并保存到本地的代码
自己网上找了,并一点点写下来的。可以直接使用。我这个使用NPOI写入。需要提前做好引入。先放上效果图: public void ExcelTest() { //导出:将数据库中的数据,存储到一个excel中 //1、查询数据库数据 //2、 生成excel //2_1、生成workbook //2_2、生成sheet原创 2021-05-07 16:06:49 · 1162 阅读 · 0 评论 -
C#NPOI合并单元格后添加边框出现问题解决办法
之前对普通的单元格添加边框很简单,老老实实代码出来也没什么问题。代码如下: #region 表尾第二行行数据单元格样式 HSSFCellStyle cs_row8 = (HSSFCellStyle)workbook.CreateCellStyle(); //创建样式 cs_row8.WrapText = true; //自动换行 cs_row8.Alignment = NPOI.S原创 2021-04-29 16:35:54 · 2600 阅读 · 0 评论 -
C#中自设定代码折叠#region
在vs中写C#,有的程序段可能很多但不是主心骨,这时候看代码就比较麻烦了。几百行几百行的来。如果是一个类或者一个方法,vs在左侧会自带折叠代表的标志。如果是其它部分的呢,可以用#region来解决。需注意:#region和#endregion是成对出现的。如图所示:折叠之后:...原创 2021-04-25 16:04:24 · 676 阅读 · 0 评论 -
C# 使用NPIO在excel指定单元格写内容,合并单元格
注:在项目里不要忘记添加NPIO的引用,及在程序最开头处加入两行内容。using NPOI.HSSF.UserModel;using NPOI.SS.Util;1、使用NPIO在excel指定的单元格写内容HSSFWorkbook workbook = new HSSFWorkbook();//创建工作表var sheet = workbook.CreateSheet("信息表");var row = sheet.CreateRow(0);//第1行var cell0 = row.Cre原创 2021-04-24 22:54:39 · 2816 阅读 · 0 评论 -
C# datagridview 实现按指定某列或多列进行排序
1、按某一列排序dataGridView1.Sort(dataGridView1.Columns[5], ListSortDirection.Ascending);2、按多列排序DataTable dt = getData(conn).Tables[0]; DataView dataview1=dt.DefaultView; dataview1.Sort = "[机器类型] ASC, [权值] DESC"; dataGridVi原创 2021-04-23 21:58:44 · 5423 阅读 · 0 评论 -
C# datagridview修改指定行名和列名
一、修改行名1、dataGridView1.Rows[0].HeaderCell.Value = “编号”。2、Rows数组从0开始。3、0代表第一行。二、修改列名1、dataGridView1.Columns[0].HeaderCell.Value = “编号”。2、Columns数组从0开始。3、0代表第一列。注意:必须在可视界面添加完列名后才可使用。...原创 2021-04-23 17:18:07 · 6025 阅读 · 0 评论 -
C#中DataGridView控件如何选中某个指定的单元格
1、获得某个(指定的)单元格的值:dataGridView1.Rows[i].Cells[j].Value;2、获得选中的总行数:dataGridView1.SelectedRows.Count;3、获得当前选中行的索引:dataGridView1.CurrentRow.Index;4、获得当前选中单元格的值:dataGridView1.CurrentCell.Value;5、取选中行的数据string[] str = new string[dataGridView.Rows.Co原创 2021-04-23 11:13:47 · 6007 阅读 · 0 评论 -
VS2015如何在一个C#工程下,添加多个.cs文件
在VS下新建一个C# 工程,默认会自带一个Form1.cs,如下图所示,在里头可以实现对若干个控件的操作代码。但如果全部在一个里头实现,并不方便我们对之后项目内容的扩展。为此,需要分多个.cs,方便很多,也清楚很多。方法如下:选中项目,右键—》添加—》新建项—》常规—》Visual C#类,此时,可以适当改变下这个.cs文件的名字即可确认。注:此处的选中的项目,就是第一行,解决方案,是这个。添加完成之后,如图所示。...原创 2021-04-04 14:25:49 · 8121 阅读 · 0 评论