怎样在EXCEL中自动生成拼音
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样在EXCEL中自动生成拼音相关的知识,希望对你有一定的参考价值。
EXCEL表中A列是姓名。我想在B列自动输入姓名对应的拼音。能实现吗?
比如A列是:张三
那么B列就显示:zhangsan
----------------------
注:拼音不需要声调,也不能是一些特殊字符构成的拼音。如ē,这样的拼音不行。我需要的拼音是由纯英文字母构成的拼音,想例子那样:zhangsan即可。
吉姆要全部小写。
1、首先在电脑桌面上打开excel文档。
2、然后输入公式“=getpy(C2)”。
3、此时就出现拼音了。
4、接着选中D2单元格,向下拖动鼠标。
5、所有姓名都自动生成拼音了。
6、输入公式“=PROPER(D2)”,按回车确认,可以将首字母改成大写。
7、最后首字母就变成大写了。
注意事项:
1、在使用excel表格的时候,不要随意的按enter和空白键。
2、要善于利用excel表格里面的快捷键,进行excel表格的编辑。
3、在使用excel表格的时候,一定要定时的进行保存。
4、在使用excel表格的时候,一旦有不懂的问题,一定要及时的向专业人员进行咨询。
参考技术A1、首先在电脑桌面上打开excel文档。
2、然后输入公式“=getpy(C2)”。
3、此时就出现拼音了。
4、接着选中D2单元格,向下拖动鼠标。
5、所有姓名都自动生成拼音了。
6、输入公式“=PROPER(D2)”,按回车确认,可以将首字母改成大写。
7、最后首字母就变成大写了。
参考技术B 首先输入你要标注拼音的文字,并且将表格的行高调整到适合添加拼音的高度,在菜单栏中的-开始-字体的第二行出,有个wen(文),点击它右侧的小三角形。首先输入你要标注拼音的文字,并且将表格的行高调整到适合添加拼音的高度,在菜单栏中的-开始-字体的第二行出,有个wen(文),点击它右侧的小三角形。
点击这个图标后,再在它的目录下,勾选“显示拼音字段”。如果你不勾选这个选项,即便你标注了拼音也是隐藏的。
然后再在目录第三行,点击“拼音设置”,然后如图所示,设置为居中。这样标注的拼音会比较好看。
再在目录的第二行选择“编辑拼音”,然后可以看到文字上出现了一个框框,这个时候把输入法切换成英文,就可以输入拼音了。
很多朋友会说,可是你标注的这个拼音没有声调,别人看了还是不懂怎么读。没有问题,现在教大家如何标注有声调的拼音。点击“编辑拼音”使拼音框框可以编辑后,在菜单栏选择插入。
点击插入之后,这个时候我们可以看到,右侧菜单栏会出现“符号”栏,选择下面的那个“更多”。
看到它弹出一个窗口后,选择“拼音”选项,然后再插入需要标注声调的那个韵母。如图所示,插入ǐ
。到了这一步,就已经完成啦。 参考技术C 不知道你会不会用VBA,如果会的话一下两个模块(现在是直接显示汉字的声母)稍微修改一下就可以实现你需要的功能,使用的时候像函数一样就可以了例如你需要A1中的汉字转换成拼音就直接用PY(A1)就可以实现。
Public Function PY(TT As String) As Variant '自定义函数,目的:把一组汉字变为一组汉字拼音的第一个字母。
PY = ""
For i = 1 To Len(TT)
temp = Asc(Mid$(TT, i, 1))
If temp > 255 Or temp < 0 Then '是汉字吗?
PY = PY & pinyin(Mid$(TT, i, 1)) '转化为拼音首字母,
Else
PY = PY & LCase(Mid$(TT, i, 1)) '转化英文字母
End If
Next i
End Function
Public Function pinyin(myStr As String) As Variant '自定义函数,目的:把单个汉字变为拼音的第一个字母。
On Error Resume Next
myStr = StrConv(myStr, vbNarrow)
If Asc(myStr) > 0 Or Err.Number = 1004 Then pinyin = ""
pinyin = Application.WorksheetFunction.VLookup(myStr, ["吖","A";"八","B";"嚓","C";"咑","D";"鵽","E";"发","F";"猤","G";"铪","H";"夻","J";"咔","K";"垃","L";"呒","M";"旀","N";"噢","O";"妑","P";"七","Q";"囕","R";"仨","S";"他","T";"屲","W";"夕","X";"丫","Y";"帀","Z"], 2)
End Function本回答被提问者采纳 参考技术D 你好:
你这里要 自动输入汉字的对应 拼音,这个功能在excel里有的吗?在word里应该是有的。
所以,很对不起,不能为你提供很好的帮助。不过,在这里我用过一个软件,软件的名字为:KTestpinyin
现在我不知道是否可以提交上来!!!!!!
嗯,若不能提交,你还是直接去网上找下好了,感觉不错的拼音软件!!!
(是不能附带提交rar格式的文件的)
我现在就去我的百度主页上放置这个,你也可以过会儿去看下的。呵呵,还是没有帮到你。
若excel真有这种功能,还是值得关注下的。
Java使用Excel的问题:自动跳过空字段中文加拼音和时间处理错误的解决方法
在Java中解析Excel是很多管理类系统的重要功能, 目前主要有阿里的easyExcel和HSSF两种开源工具,如何使用网上有大量的例子,不再赘述,我们这里看三个我亲身经历的问题:
-
自动跳过空字段
-
中文内容自动给加了拼音
-
时间处理错误。
本文首先分析故障现象或者原因,之后给出解决方案。
1.自动跳过空字段
有些场景下上传的excle文件里有些选项是可选的,用户自然可以不填,但是在使用时会遇到问题。
例如如下的文件:
用户是否签到和是否允许使用pad都是可选的,用户可以根据实际需要填或者不填。但是我们在java 中使用XLSX提供的方法自动读取Excel,如下:
String fileName = "/Users/liuqingchao/Downloads/five_2.xlsx";
List<List<String>> lists = ExcelUtils.getXLSXDataOfFirstSheet(new FileInputStream(fileName));
结果会出现这样子:
可以看到,debug中很多行是空的,其中序号2、3、4对应的行元素都少了,其中序号2对应的是将文件中的空位置直接跳过了,这是无法接受的,因为后续对应关系都无法确定了。
测试发现,使用XSSF和早期版本的easyExcel都存在该问题。其底层都是基于迭代器方式读的,直接修改其源码不现实,但是可以自己来解析文件,详细实现见asyn-task的getExcelFileFixedZh()方法。
但是使用该方法会导致解析时间时出错。详见下一小节。
2.时间解析错误
我们知道正常的时间格式是”2022-10-31 16:09:13“,但是如果将其放在一个Excel格子里,用户在操作的时候,可能会将其写错,最明显的就是日期和时间之间的空格,如果是中文的空格,用户无法发现的,但是后续处理就会有问题,所以最好将其分开,日期和时间分别用一个格子,例如篇头给出的样子。
但是解析的时候仍然出问题,我们使用如下的代码来解析:
String fileName = "/Users/liuqingchao/Downloads/five_2.xlsx";
List<List<String>> lists= ExcelUtilsFixedZh.getExcelDataRowsInFirstSheet(new FileInputStream(fileName));
System.out.println(lists);
可以看到日期解析没有问题,但是时间格子对应的全错了:
查阅之后发现,如果格子里存的是时间,Excel会自动进行类型转换, 没有日期就从1900年1月1日开始算,此时会出现两种情况,一种是直接将时间转换成”1900.1.1 19:00:00“,另一种是将时间倒退一天给变成”1899.1.1 19:00:00“,而后者转成时间戳就是我们看到的-2209035600000。前者在阿里easy Excel中出现过。
很明显,这都不是我们想要的。
而且,即使此时将List定义为List<List<String>>也无法阻止Excel自动转换时间。
3.中文信息后面带了拼音
该问题是于波发现的,偶尔出现,本人没能复现出来,现象就是中文信息后面自动给加了拼音, 例如本来存的是”否“,但是实际读到的是”否fou“。
4.解决方法
针对上述几个问题,目前发现比较好的方式是:使用easyExcel版本3。并定义一个与一行记录相对应的类。读取的时候,将类对象设置进去,这样可以解决上面提到的三个问题。
具体操作方法见:truman-lecture里AbstractExcelUploadExecutor下的
List<BatchAddEpisodesExcelVO> records;
try
records = AsynTaskFileUtils.getEasyExcelFileRecord(this.httpClient, innerHost, getParams().getResourceId(), BatchAddEpisodesExcelVO.class);
这里的BatchAddEpisodesExcelVO就是与Excel文件完全对应的类对象。获得记录的核心为:
public static <T> List<T> getEasyExcelFileRecord(HttpClient httpClient, String host, String resourceId, Class clazz)
.....
EasyExcel.read(connection.getInputStream(), clazz, new PageReadListener<T>(dataList ->
for (T demoData : dataList)
list.add(demoData);
)).sheet().doReadSync();//同步方式
return list;
.....
此时虽然用了回调,但是将其设置为同步模式就可以保证获得全部记录之后才返回。
注意事项
另外注意一点,我们定义BatchAddEpisodesExcelVO这种与excle对应的对象的时候,最好将所有的属性,特别是日期相关务必用String类型,这样可以避免Excel给我们做数据转换。否则使用easyExcle解析时间会出现如下情况:
-
如果日期是Date类型,则直接抛异常。
-
如果时间是Date类型,则时间仍然是错的。
例如,我们还是使用上的文件,定义一个简单类:
@Getter
@Setter
@EqualsAndHashCode
public class DemoData
private String lectureId;
private Date beginDate;
private String beginTime;
private String yunXu;
private String locale;
然后执行,此时直接抛异常:
com.alibaba.excel.exception.ExcelDataConvertException: Convert data com.alibaba.excel.metadata.data.ReadCellData@4f7479f3 to class java.util.Date error
如果我们将上面的beginTime的类型改成Date,则时间错误:
结论:不要让excle给我们做转换,都先用String类型拿到所有数据,我们自己转换。
以上是关于怎样在EXCEL中自动生成拼音的主要内容,如果未能解决你的问题,请参考以下文章