精华内容
下载资源
问答
  • mac 上 csv导入Excel 出现 “此文本文件包含的数据无法放置在一个工作表” 错误
    千次阅读
    2020-12-31 16:32:54

    0.首先确认你的csv文件不能太大,我也不知道行数上限是多少,但是我导入过150w的内容,没有成功...

    1.编码问题,确认你csv的编码是utf-8,而且Excel导入的时候选择的也是utf-8

    2.假如你导入的列中,存在文本列,比如第一列是存的标题之类的,那要保证标题里没有比较骚的字符,尤其是各种花样的换行符号。也就是文本列必须剔除换行字符

    3.如果以上步骤都保证没问题,还是失败的话。。记住,把第一列改成数字列,第一列不能是文本

    更多相关内容
  • 在实际工作中,有时需要将exp导出的历史备份dmp文件进行恢复,若之前的建表语句及空间名无法找到,则直接用imp语句进行导入的话可能报错空间不存在,且导入数据占用空间可能会非常大。使用本文方法可将exp导出的...
  • 2021 全年工作日假期周末mysql快速导入表,只需导入sql即可,解放双手,不用一天一天去导入,还携带了excel,超划算
  • excel_to_html 高级转换器将Excel工作表转换为html,我可以使您轻松下载html页面,但是我需要将工作表导入数据库,主要是导入excel工作表并使用jinja2和database解析工作表以创建表,
  • Sqoop数据迁移,工作机制,sqoop安装(配置),Sqoop的数据导入导入表数据到HDFS,导入关系到HIVE,导入到HDFS指定目录,导入表数据子集,按需导入,增量导入,sqoop数据导出.pdf
  • 在PHP中实现EXCEL工作表数据的导入导出
  • 导入Excel表格数据(一)

    千次阅读 2019-06-07 15:42:04
    开发工具与关键技术:VS+导入Excel表格 作者: 李伙 撰写时间: 2019年6月3日 在学习MVC过程中,如果我们需要录入某条数据时可以利用新增的方法把我们的数据录入进去,而录入的数据比较多的时候,一条一条的录入会...
    开发工具与关键技术:VS+导入Excel表格
    作者: 李伙
    撰写时间: 2019年6月3日
    

    在学习MVC过程中,如果我们需要录入某条数据时可以利用新增的方法把我们的数据录入进去,而录入的数据比较多的时候,一条一条的录入会比较麻烦,所以我们可以在VS中写一个方法就可以一次性录入多条数据了。即导入Excel表格数据到数据库中,这样会节省我们的时间。接下来看看如何导入Excel表格数据的。
    在这里插入图片描述
    如上图所示:因为还没把Excel表格数据保存到数据库中,所以首先要把上传的数据保存到临时表中。这个临时表其实也是用table标签来装的,所以就不显示html的代码了。然后就是一个if判断语句,是为了避免取消选择文件后触发上传,然后就是提交表单了,可以看出我们是用到ajaxSubmit()方法来提交表单的。ajaxSubmit()提交表单:我们直接通过form提交的话,提交后当前页面跳转到form的action所指向的页面。然而,很多时候我们并不希望提交表单后页面跳转,那么,我们就可以使用ajaxSubmit(obj)来提交数据。ajaxSubmit(obj)方法是jQuery的一个插件jquery.form.js里面的方法,所以使用此方法需要先引入这个插件。导入到临时表后就启动保存到数据库的按钮,因为在未导入数据之前我们是把保存到数据库的按钮给禁用的,所以导入数据后就可以启动保存到数据库的按钮了。然后就是表格数据的重载,也就是刷新表格。
    在这里插入图片描述
    如上图所示:是控制器中的代码,它的基本思路是1、获取读取的文件,2、把文件转换为二进制数组,3、二进制数组转成内存流,4、利用NPOI把内存流中的数据读取成Excel。在写代码前要用“try catch”来捕获异常。上图中首先要把session中的ImportExcel移除是为了避免残留以前数据,然后判断页面传过来的文件是否为Excel表格,如果不是就提醒用户。然后就是声明二进制数组存放文件,再将传入的文件转化为二进制的数组存入fileBytes,然后再将二进制的数组转化为内存流,最后就是将内存流转化为工作簿。
    在这里插入图片描述
    如上图所示:将内存流转化为工作簿后,就要判断工作簿中是否有工作表,然后就是查询出需要的信息,再声明对象列表,存放导入的学生信息,因为一个工作簿中可以有多个工作表,所以我们要获取第一个工作表。
    在这里插入图片描述
    如上图所示:获取第一个工作表后就要判断工作表中是否有数据,如果没有数据就提醒用户数据表为空。PhysicalNumberOfRows 表示获取的是物理行数,也就是不包括那些空行(隔行)的情况。然后就将数据装到DataTable中;然后就是获取标题行和获取表格列数;再获取表格行数即最后一行下标+1;然后创建dataTable中的列,是为了循环添加标题行中各个单元格的数据,这里用到了for循环语句,i=每一行的第一个单元格下标,i<每一行的列数,i自增;然后就是遍历表头行中每一个单元格,是为了获取标题行各个单元格的数据,再将获取到的标题行的数据放到dataTable中。FirstCellNum:获取某行第一个单元格下标;LastCellNum:获取某行的列数;FirstRowNum:获取第一个实际行的下标;LastRowNum:获取最后一个实际行的下标。
    在这里插入图片描述
    如上图所示:把获取到的标题行的数据放到dataTable中后就要读取Excel表格中的数据,sheet.FirstRowNum表示第一行的是标题,这里用for循环语句,i=标题+1;i<表格行数;i自增;然后就是获取每一行的数据,再创建DataTable行;这里为了防止每一行的数据为空,所以用if判断语句判断行数不能为空,然后就是遍历Excel中一行所有的单元格,再把新行添加到dataTable中。
    在这里插入图片描述
    如上图所示:因为导入的数据可能会有失败的,所以我们要声明变量记录成功和失败的条数,然后用foreach遍历dataTable中的数据,创建studentVo对象保存每一条数据,然后用“try catch”捕获异常,这里以学院为例,先获取学院ID 和学院名称然后通过dataTable中的AcademeName到dbAcademe中查找相应的AcademeID,然后就将每一条数据都添加到对象列表中,值得注意的是,此时的数据还未保存到数据库,只是导入到临时表中,保存到session中的。所以下一篇就讲讲如何保存到数据库中。看着觉得步骤很多,其实也离不开它的4个基本思路,分别为: 1、获取读取的文件,2、把文件转换为二进制数组,3、二进制数组转成内存流,4、利用NPOI把内存流中的数据读取成Excel。这样将导入的Excel表格的数据保存到session中就完成了。如下图所示:Excel表格的数据已经导入到临时表中,也已保存到session中。
    在这里插入图片描述

    展开全文
  • PE导入表和IAT的原理及工作关系

    千次阅读 2020-07-14 03:27:30
    PE导入表和IAT的原理及工作关系 文章目录PE导入表和IAT的原理及工作关系0.说明1.PE导入表和IAT大致工作关系(1)为什么会有IAT(2)为什么会有导入表2.导入表和IAT的真正关系(原理)(1)...

    PE导入表和IAT表的原理及工作关系

    0.说明

    观看滴水逆向视频总结(部分截图来自于滴水课件)

    编译器:vc++6.0

    编写语言:c

    观看滴水逆向视频总结(部分截图来自于滴水课件)

    欢迎大家留言交流😃^ __ ^

    可以加我qq一起学习:1245885144😄🤣

    1.PE导入表和IAT表大致工作关系

    (1)为什么会有IAT表

    IAT:Import Address Table 导入(函数)地址表

    一般程序在调用自身函数的时候,自身函数地址RAV是固定的;但是当程序在调用dll里的函数的时候,由于dll的地址会发生重定位,导致dll里的函数地址每次都会发生变化。

    为了每次都能准确的调用dll函数的地址,就特意构建了一张表,用于存储每次程序运行,dll发生重定位之后,dll的函数的地址。

    而这样之后,那我自身程序在调用dll函数的时候,就可以用“类似指针”指向这张表格,取其值为函数新的地址。即可准确调用dll的函数。

    //类似这样的调用函数。这里的0x401234就是IAT的地址,
    CALL DWORD PTR DS:[0x401234]
    
    CALL DWORD PTR DS:[<&KERNEL32.GetVersion>;  kernel32.GetVersion
    

    (2)为什么会有导入表

    说到导入表,肯定就是对应导出表。而导出表的作用是自身提供一张清单,表明自己又哪些函数,大多是dll为exe提供函数,存在导出表。那相反,exe为了表明自身需要哪些dll的函数,也会生成一张表,那这张表就是导入表。

    有些dll一会需要使用别的dll的函数,那这类dll也会有导入表。

    同样,导出表是提供的自身要导出的函数的地址,对应导入表,也是为了提供的要导入的dll的函数的地址,只不过由于这个地址不固定,所以每次都会重新修正。(大致,具体看下面原理)

    2.导入表和IAT表的真正关系(原理)

    导入表再目录项中的第二项(导出表之后)。对应目录项中的VirtualAddress(RVA)即指向的导入表。

    image-20200714021426590

    这个结构体有5个4字节数据,占20字节,但只需特别记住这三个RVA即可,下面会分别详细说明。

    三个RVA所指向的地址大概是这样的:

    image-20200714021657868

    注意这是PE文件在加载前的样子!

    上面涉及到的IMAGE_THUNK_DATA这个结构数组,其实就是一个4字节数,本来是一个union类型,能表示4个数,但我们只需掌握两种即可,其余两种已经成为历史遗留了。

    (1)OriginalFirstThunk

    OriginalFirstThunk这个RVA所指向的是INT表(Import Name Table),这个表每个数据占4个字节。顾名思义就是表示要导入的函数的名字表。

    但是之前学导出表有了解到,导出函数可以以名字导出,亦可以序号导出。所以为了方便区分,就将这INT表的每个值做了细微调整:

    INT:如果这个4字节数的最高位(二进制)为1,那么抹去这个最高位之后,所表示的数就是要导入的函数的序号;如果最高位是0,那这个数就也是一个RVA,指向IMAGE_IMPORT_BY_NAME结构体(包含真正的导入函数的名字字符串,以0结尾)。INT表以4字节0结尾。

    IMAGE_IMPORT_BY_NAME:前两个字节是一个序号,不是导入序号,一般无用,后面接着就是导入函数名字的字符串,以0结尾。

    image-20200714021657868

    (2)Name

    这个结构体变量也是一个RVA,直接指向一个字符串,这个字符串就是这个导入表对应的DLL的名字。说到这,大家明白,一个导入表只对应一个DLL。那肯定会有多个导入表。所以对应目录项里的VirtualAddress(RVA)指向的是所有导入表的首地址,每个导入表占20字节,挨着。最后以一个空结构体作为结尾(20字节全0结构体)。

    (3)FirstAddress

    FirstAddress(RVA)指向的就是IAT表!IAT表也是每个数据占4个字节。最后以4字节0结尾。

    注意上图PE文件加载前,IAT表和INT表的完全相同的,所以此时IAT表也可以判断函数导出序号,或指向函数名字结构体。

    而在加载后,差别就是IAT表发生变化,系统会先根据结构体变量Name加载对应的dll(拉伸),读取dll的导出表,对应原程序的INT表,匹配dll导出函数的地址,返回其地址,贴在对应的IAT表上,挨个修正地址(也就是GetProcAddress的功能)。

    所以上文说到,IAT表会存储dll的函数的地址,方便调用该函数时,直接取IAT表这个地址内的值,作为函数地址,去CALL。

    image-20200714025103175

    (注意IAT表发生变化)

    3.C语言解析导出表

    (1)建议

    解析的时候要注意,每个地址都是RVA,RVA转FOA会很多,比较绕。

    有两个点很容易错

    1. IMAGE_IMPORT_BY_NAME这个结构体前两个字节是一个数,不用管,但是在读取函数名字的时候,一定要记住这里是个结构体,要跳过前两个字节的数再读取。
    2. 由于RVA互转FOA很多,可能会误把INT表直接当做IMAGE_IMPORT_BY_NAME给读取了。

    建议

    1. 使用PIMAGE_IMPORY_DESCRIPTOR定义导入表结构体指针pImportDescriptor,然后直接pImportDescriptor++,即可实现导入表的遍历。
    2. 同理,也可以直接使用四字节指针去指向INT表或IAT表,指针++,即可实现遍历表结构。

    (2)C源代码

    这是功能子函数,定义的变量名称都挺直白的。顾名思义即可。

    //功能:解析、打印重定位表
    //参数:指向该程序被读取到内存的指针
    //返回值:无
    void ReadPE( LPVOID pFileBuffer )
    {
    	PIMAGE_DOS_HEADER pDosHeader = NULL;
    	PIMAGE_NT_HEADERS32 pNtHeader = NULL;
    	PIMAGE_FILE_HEADER pFileHeader = NULL;
    	PIMAGE_OPTIONAL_HEADER pOptionHeader = NULL;
    	
    	PIMAGE_DATA_DIRECTORY pDataDirectory = NULL;
    	PIMAGE_IMPORT_DESCRIPTOR pImportDescriptor = NULL;
    
    	PDWORD pThunkINT = NULL;//INT表
    	PDWORD pThunkIAT = NULL;//IAT表
    
    	PIMAGE_IMPORT_BY_NAME pImportByName = NULL;//名称结构体
    
    	pDosHeader = (PIMAGE_DOS_HEADER)pFileBuffer ;
    	pNtHeader = (PIMAGE_NT_HEADERS32)( (DWORD)pDosHeader + pDosHeader->e_lfanew );
    	pFileHeader = (PIMAGE_FILE_HEADER)( (DWORD)pNtHeader + 4 );
    	pOptionHeader = (PIMAGE_OPTIONAL_HEADER)( (DWORD)pFileHeader + IMAGE_SIZEOF_FILE_HEADER );
    
    	pDataDirectory = (PIMAGE_DATA_DIRECTORY )pOptionHeader->DataDirectory ;
    
    	//导入表寻址
    	pImportDescriptor = (PIMAGE_IMPORT_DESCRIPTOR)( (DWORD)pDosHeader + ConvertRvaToFoa( pDataDirectory[1].VirtualAddress , pFileBuffer ) );
    
    	while( pImportDescriptor->Name )
    	{
    		printf("**************************************************\n");
    		printf("Dll Name : %s\n",(PDWORD)( (DWORD)pDosHeader + ConvertRvaToFoa( pImportDescriptor->Name ,pFileBuffer) )  );
    		
    		pThunkINT = (PDWORD)( (DWORD)pDosHeader + ConvertRvaToFoa( pImportDescriptor->OriginalFirstThunk , pFileBuffer) );
    		while( *pThunkINT )
    		{	
    			
    			if( *pThunkINT & 0x80000000 )
    				printf("Import by series number : %d\n", (DWORD)pThunkINT & 0x7fffffff);
    			else
    			{	//寻址函数名字结构体
    				pImportByName = (PIMAGE_IMPORT_BY_NAME)( (DWORD)pDosHeader + ConvertRvaToFoa( *pThunkINT , pFileBuffer)  );
    				printf("Import by name!       Hint: %-10XFunction Name: %s\n",pImportByName->Hint ,pImportByName->Name   );
    				
    			}
    			pThunkINT++;	
    	//		getchar();
    		}
    
    		putchar('\n');
    
    		pImportDescriptor++;
    	}
    }
    

    4.移动导出表到新增节区

    (1)流程

    image-20200714031113446

    (2)我遇到的困难

    1. IAT表不能移动,因为在调用dll函数时,call命令指向的地址是IAT表,再取IAT表内的值。除了IAT表,其余都可以移动。
    2. 新增节区的属性必须包含可读可写(0xC0000000),不然系统无法正常解析导入表。PE文件:节表(区块表) 节表属性格式分析
    3. 有的PE在文件状态下,实际大小(查看二进制数据)比PE结构表明的大小(最后一个节区PointerToRawData + SizeOfRawData)要大。造成问题:RVA转FOA出错;新增节区的与原始最后一个节区不连贯。原因:那一部分多出的数据是无效的,可以覆盖0或直接删除(可能是编译时自带的)。解决:(新增节区时)可以在遍历节表头的时候,根据最后一个节表头的PointToRawData+SizeOfRawData修正FileSize。

    (3)C源代码

    主要功能子函数。

    //功能:移动导入表到新增节
    //参数:指向文件内存的指针
    //返回值:指向新增节区后再移动导出表过后的PE内存的指针
    LPVOID MoveImportDescriptorToNewSection( LPVOID pFileBuffer )
    {
    	DWORD Offset = FileSize;//复制导入表时的偏移等于新增节区前的文件大小
    	DWORD SIZEOF_INT = 0;
    
    	PIMAGE_DOS_HEADER pDosHeader = NULL;
    	PIMAGE_NT_HEADERS32 pNtHeader = NULL;
    	PIMAGE_FILE_HEADER pFileHeader = NULL;
    	PIMAGE_OPTIONAL_HEADER pOptionHeader = NULL;
    	
    	PIMAGE_DATA_DIRECTORY pDataDirectory = NULL;
    	PIMAGE_IMPORT_DESCRIPTOR pImportDescriptor = NULL;
    
    	PDWORD pThunkINT = NULL;//INT表
    	PDWORD pThunkIAT = NULL;//IAT表
    
    	PIMAGE_IMPORT_BY_NAME pImportByName = NULL;
    
    	//第一步:	新增一个节区(注意新增节区的大小是不装的下导入表)					
    	pFileBuffer = IncreaseNewSection( pFileBuffer , 0x3000 );//第二个参数是新增节的大小
    
    	//初始化PE头
    	pDosHeader = (PIMAGE_DOS_HEADER)pFileBuffer;
    	pNtHeader = (PIMAGE_NT_HEADERS32)( (DWORD)pDosHeader + pDosHeader->e_lfanew );
    	pFileHeader = (PIMAGE_FILE_HEADER)( (DWORD)pNtHeader + 4);
    	pOptionHeader = (PIMAGE_OPTIONAL_HEADER)( (DWORD)pFileHeader + IMAGE_SIZEOF_FILE_HEADER);
    
    	pDataDirectory = (PIMAGE_DATA_DIRECTORY)pOptionHeader->DataDirectory;
    
    
    	//第二步:	根据目录项里的RVA和Size复制整块导入表到到新增节区(Size大小内同时包多个dll的导入表)														
    	memcpy((PDWORD)( (DWORD)pDosHeader + Offset) , (PDWORD)( (DWORD)pDosHeader + ConvertRvaToFoa(pDataDirectory[1].VirtualAddress , pFileBuffer ) ) , pDataDirectory[1].Size );
    	//同时修正目录下里的RVA	
    	pDataDirectory[1].VirtualAddress = ConvertFoaToRva(Offset  , pFileBuffer );
    	
    	//修改偏移
    	Offset += pDataDirectory[1].Size ;
    
    	//初始化指向导入表的指针
    	pImportDescriptor = (PIMAGE_IMPORT_DESCRIPTOR)( (DWORD)pDosHeader + ConvertRvaToFoa( pDataDirectory[1].VirtualAddress , pFileBuffer ) );
    	
    	
    	//第六步:	遍历其余dll的导入表,重复以上第三步至第五步(写的时候这一步要通过while循环放在第二步之后)				
    	while(pImportDescriptor->Name )
    	{
    
    		//第三步:	根据第一块导入表的OriginalFirstThunk(RVA),复制整块INT表(先遍历计算大小,再通过memcpy复制)					
    		pThunkINT = (PDWORD)( (DWORD)pDosHeader + ConvertRvaToFoa( pImportDescriptor->OriginalFirstThunk ,pFileBuffer) );
    		do
    			SIZEOF_INT+=4;
    		while( *(pThunkINT++) );//让SIZEOF_INT多加一个4的大小,为了给末尾留4字节0作为结尾
    		memcpy( (PDWORD)( (DWORD)pDosHeader + Offset) , (PDWORD)( (DWORD)pDosHeader + ConvertRvaToFoa(pImportDescriptor->OriginalFirstThunk ,pFileBuffer)  ) , SIZEOF_INT);					
    		//同时修正导入表中OriginFirstThunk(RVA)				
    		pImportDescriptor->OriginalFirstThunk = ConvertFoaToRva( Offset , pFileBuffer );
    
    		//修改偏移
    		Offset += SIZEOF_INT;
    		
    		//第四步:	遍历INT表,判断,复制对应IMAGE_IMPORT_BY_NAME这个结构体到新增节区(注意:所有涉及到的字符串末尾要留一个0)	
    		//同时修正INT表中的RVA														
    		//同时遍历IAT表,修正IAT表中的RVA														
    		//(IAT表不能移动,因为在调用dll函数时,call命令指向的地址是IAT表,再取IAT表内的值)
    		pThunkINT = (PDWORD)( (DWORD)pDosHeader + ConvertRvaToFoa( pImportDescriptor->OriginalFirstThunk , pFileBuffer) );
    		pThunkIAT = (PDWORD)( (DWORD)pDosHeader + ConvertRvaToFoa( pImportDescriptor->FirstThunk , pFileBuffer) );						
    		for( ; *pThunkINT ; pThunkINT++ , pThunkIAT++)
    			if( !(*pThunkINT & 0x80000000) )
    			{
    				memcpy( (PDWORD)( (DWORD)pDosHeader + Offset) , (PDWORD)( (DWORD)pDosHeader + ConvertRvaToFoa(*pThunkINT ,pFileBuffer) ) , 2 + strlen( (PBYTE)( (DWORD)pDosHeader + ConvertRvaToFoa(*pThunkINT+2 , pFileBuffer) )  )   );
    				//同时修正INT表中的RVA		
    				*pThunkINT = ConvertFoaToRva( Offset , pFileBuffer);
    				//同时修正IAT表中的RVA
    				*pThunkIAT = *pThunkINT;
    
    				//修改偏移
    				Offset += 2 + strlen( (PBYTE)( (DWORD)pDosHeader + ConvertRvaToFoa(*pThunkINT+2 , pFileBuffer) )  ) + 1;//多加一个1的大小,给字符串末尾留一个0的结尾符。
    			}
    		
    		//第五步:	根据导入表的Name(RVA),复制dll名字符串到新增节区					
    		memcpy( (PDWORD)( (DWORD)pDosHeader + Offset) , (PDWORD)( (DWORD)pDosHeader + ConvertRvaToFoa( pImportDescriptor->Name , pFileBuffer) ), strlen( (PBYTE)(DWORD)pDosHeader +ConvertRvaToFoa(pImportDescriptor->Name ,pFileBuffer)  )   );	
    		//同时修正导入表中的Name(RVA)					
    		pImportDescriptor->Name = ConvertFoaToRva( Offset , pFileBuffer);
    
    		//修改偏移
    		Offset += strlen( (PBYTE)( (DWORD)pDosHeader + ConvertRvaToFoa( pImportDescriptor->Name , pFileBuffer) )  ) + 1;//多加一个1的大小,给字符串末尾留一个0的结尾符。
    
    
    		pImportDescriptor++;//遍历导入表。
    	}	
    
    	return pFileBuffer ;
    }
    

    欢迎大家留言评论交流。

    展开全文
  • 这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的...,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入...

    欢迎使用Markdown编辑器

    你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

    新的改变

    我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

    1. 全新的界面设计 ,将会带来全新的写作体验;
    2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
    3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
    4. 全新的 KaTeX数学公式 语法;
    5. 增加了支持甘特图的mermaid语法1 功能;
    6. 增加了 多屏幕编辑 Markdown文章功能;
    7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
    8. 增加了 检查列表 功能。

    功能快捷键

    撤销:Ctrl/Command + Z
    重做:Ctrl/Command + Y
    加粗:Ctrl/Command + B
    斜体:Ctrl/Command + I
    标题:Ctrl/Command + Shift + H
    无序列表:Ctrl/Command + Shift + U
    有序列表:Ctrl/Command + Shift + O
    检查列表:Ctrl/Command + Shift + C
    插入代码:Ctrl/Command + Shift + K
    插入链接:Ctrl/Command + Shift + L
    插入图片:Ctrl/Command + Shift + G
    查找:Ctrl/Command + F
    替换:Ctrl/Command + G

    合理的创建标题,有助于目录的生成

    直接输入1次#,并按下space后,将生成1级标题。
    输入2次#,并按下space后,将生成2级标题。
    以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

    如何改变文本的样式

    强调文本 强调文本

    加粗文本 加粗文本

    标记文本

    删除文本

    引用文本

    H2O is是液体。

    210 运算结果是 1024.

    插入链接与图片

    链接: link.

    图片: Alt

    带尺寸的图片: Alt

    居中的图片: Alt

    居中并且带尺寸的图片: Alt

    当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

    如何插入一段漂亮的代码片

    博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

    // An highlighted block
    var foo = 'bar';
    

    生成一个适合你的列表

    • 项目
      • 项目
        • 项目
    1. 项目1
    2. 项目2
    3. 项目3
    • 计划任务
    • 完成任务

    创建一个表格

    一个简单的表格是这么创建的:

    项目Value
    电脑$1600
    手机$12
    导管$1

    设定内容居中、居左、居右

    使用:---------:居中
    使用:----------居左
    使用----------:居右

    第一列第二列第三列
    第一列文本居中第二列文本居右第三列文本居左

    SmartyPants

    SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

    TYPEASCIIHTML
    Single backticks'Isn't this fun?'‘Isn’t this fun?’
    Quotes"Isn't this fun?"“Isn’t this fun?”
    Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

    创建一个自定义列表

    Markdown
    Text-to- HTML conversion tool
    Authors
    John
    Luke

    如何创建一个注脚

    一个具有注脚的文本。2

    注释也是必不可少的

    Markdown将文本转换为 HTML

    KaTeX数学公式

    您可以使用渲染LaTeX数学表达式 KaTeX:

    Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

    Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

    你可以找到更多关于的信息 LaTeX 数学表达式here.

    新的甘特图功能,丰富你的文章

    Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
    • 关于 甘特图 语法,参考 这儿,

    UML 图表

    可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

    张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

    这将产生一个流程图。:

    链接
    长方形
    圆角长方形
    菱形
    • 关于 Mermaid 语法,参考 这儿,

    FLowchart流程图

    我们依旧会支持flowchart的流程图:

    Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no
    • 关于 Flowchart流程图 语法,参考 这儿.

    导出与导入

    导出

    如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

    导入

    如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
    继续你的创作。


    1. mermaid语法说明 ↩︎

    2. 注脚的解释 ↩︎

    展开全文
  • Excel工作表导入MSFlexGrid中Excel工作表导入MSFlexGrid中
  • 原因:csv文件里面的文本内容里面有太多的换行符 '\n' ,直接用notepad把换行符替换成其他的文本 eg:“ |||”等
  • PE文件——导入表&导出&函数覆盖

    千次阅读 2022-04-06 00:47:51
    第一个字段4D 5A被定义成字符“MZ”作为识别标志,后面的一些字段指明了入口地址、堆栈位置和重定位位置等。 对于PE文件来说,有用的是最后的e_lfanew字段,这个字段指出了真正的PE文件头在文件中的位置,这个位置...
  • kingbase(人大金仓)导出导入指定

    千次阅读 2021-11-16 17:18:51
    导出用sys_dump,导入用ksql。都采用命令行方式,未登录数据库,在外围进行。 项目正处于上线试运行阶段,正式环境下程序有些问题,与数据库有关。我想将正式环境下的一些数据库导出来,导进开发库。 环境: 操作...
  • 接下来,我们就开始去初步了解数据库和,以及创建一个数据库和向MySQL里面导入数据.一.初步了解数据库创建一个数据库1.显示所有的数据库SHOW DATABASES;点击运行按钮,就可以看到显示所有的数据库列表了.2.创建一个...
  • 图解SSIS循环导入Excel工作表图解SSIS循环导入Excel工作表图解SSIS循环导入Excel工作表图解SSIS循环导入Excel工作表
  • 数据长度超出工作表外,会丢失部分数据 链接:https://pan.baidu.com/s/1t_PgK6zWk93q5mIxNp3edQ 提取码:yq2a 把要拆分的表放在d盘根目录
  • 绘制完原理图后,要将器件和网络导入PCB需要进行网表导入工作,在新建PCB并保存后,在原理图界面使用快捷键D+U(Design + Update)可以实现从原理图到PCB的同步网的功能。同样,在PCB界面使用快捷键D+I(Design+...
  • csv默认的文件换行符号是"\n"(换行LF),而excel默认的文件换行符号是"\r"(回车CR) + “\n”(换行LF),所以csv文件里的数据对于excel... excel导入csv数据出错:此文本文件包含的数据无法放置在一个工作表中。。。
  • PE结构&延迟加载导入表

    千次阅读 2021-02-04 14:41:12
    延迟加载导入表是PE中引入的专门用来描述与动态链接库延迟加载相关的数据,因为这些数据所起的作用和导入表数据基本一致,所以称为延迟加载导入表。 延迟加载导入表导入表是相互分离的,一个PE文件中可以同时存在...
  • 2.3.2 从带分隔符的文本文件导入数据(read.table()) 你可以使用read.table()从带分隔符的文本文件中导入数据。此函数可读入一个表格格式的文件并将其保存为一个数据框。表格的每一行分别出现在文件中每一行。其语法...
  • 项目开发中使用Oracle,除了常用的sql语句,有时还会遇到锁、数据迁移、启动监听等问题或需求,本文做一个工作笔记小结:1.1 锁问题解决 1.2 启动 oracle 监听 1.3 dmp 导出导入 1.4 删除oracle用户及其对象、...
  • oracle 导入imp 命令

    千次阅读 2021-01-12 13:23:12
    最常用的 imp name/password@IP:1521/orcl[库] file="c:\123.dmp" full=y ignore=y。例:imp abc/123@192.168.1.3:1521/orcl file = "c:\123.dmp...oracle中imp命令详解Oracle的导入实用程序(Import utility)允许从数...
  • sql导入excel工作表一定注意要选择结尾带$美元符的,否则数据会导入不全,这个不带美元符是从sql导出的表才这样,再导入时选择这个表超过旧表记录数都不会导进去
  • 从linux上取了一些数据回来,格式是csv,编码utf-8,准备读入Excel。 按照惯例,获取外部数据–自文本,然后一路操作下来结果如下图: 排除掉编码问题后,网上查了下,信息不多,有的说是格式问题,什么存在空行...
  • Oracle分区数据的导入与导出

    千次阅读 2021-04-30 08:54:31
    而Oracle分区数据的导入导出也成了这些工作中不可忽略的一部分。分区导入导出同普通导入导出方式没有什么很大区别,只不过在导入导出时需要考虑到分区的特殊性,如:分区索引,将分区迁移到普通,或使用...
  • Matlab 导入Excel数据的方法

    万次阅读 多人点赞 2020-09-14 21:13:08
    导入 Excel 数据的方法 1. 使用 UI 界面中的 导入数据 功能。 2. 在工作区直接导入复制的 Excel 内容 在工作区新建一个变量。 用鼠标双击这个变量,查看这个变量的内容: 从 Excel 中直接 Ctrl + C 复制数据 ...
  • 在日常的数据分析工作中,我们经常需要批量导入数据,今天我们先针对单工作簿中所有数据的导入进行演示,例如下图所示的某公司北京分部2012年到2015年销售产品的记录数据,每个年度为一个独立的,且结构一样。...
  • 使用的工具是:MicrosoftOffice Excel 2013、Notepad++ v7.5.8 Spark数据处理任务生成了CSV格式的数据文件,...“自文本”导入数据进excel文件,剩下的操作参考百度经验教程。然后提示报错“此文本文件包含的数据...
  • 上一篇文章Power BI Power Query 批量导入1-单Excel工作簿中的所有工作表数据,我讲了如何将单个工作簿中所有工作表数据汇总,那么如果想要将某个文件夹下的所有工作簿中的所有工作表汇总该如何操作了? 我现在有某...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 258,369
精华内容 103,347
关键字:

怎么导入工作表