如何解决DB Csv 导出和 Excel 数字格式
我正在以 csv 格式从数据库导出一个表。我有以 0 开头的数字,例如 04596 或 059438。 如果我在 LibreOffice 或 Excel 中打开这个 csv,0 将被丢弃,数字显示为 4596 和 59438。 我将数字导出为文本,如果我在记事本 ++ 中打开 csv 文件,则 0 都在那里。
解决方法
当您在 Calc 中手动打开 CSV 文件时,您会看到文本导入过滤器设置窗口。花点时间点击确定,不要跳过这一步!
选择不应被识别为数字但应保留带前导零的文本的列,并将其类型指定为文本。还要为其余的列设置正确的类型。您可以为不需要的列指定隐藏。检查其余参数的状态 - 代码页、语言、文本字段的引号类型等。
现在点击确定。确保导入按预期进行。
现在运行这个简单的宏
Sub getMeCode
Dim oDoc As Variant
Dim aArgs As Variant
Dim sResult As String
Dim sTemp As String
oDoc = ThisComponent
aArgs = oDoc.getArgs()
sTemp = getValArg(aArgs,"URL")
sResult = "Dim sUrl As String,oDoc As Variant" + Chr(10) + "sUrl = convertToURL(""" + convertFromURL(sTemp) +""")" + Chr(10)
sResult = sResult + "Dim OpenProp(1) as New com.sun.star.beans.PropertyValue" + Chr(10)
sResult = sResult + "OpenProp(0).name=""FilterName""" + Chr(10)
sResult = sResult + "OpenProp(1).name=""FilterOptions""" + Chr(10)
sTemp = getValArg(aArgs,"FilterName")
sResult = sResult + "OpenProp(0).value=""" + sTemp + """" + Chr(10)
sTemp = getValArg(aArgs,"FilterOptions")
sResult = sResult + "OpenProp(1).value=""" + sTemp + """" + Chr(10)
sResult = sResult + "If Not FileExists(sUrl) Then Exit Sub" + Chr(10)
sResult = sResult + "oDoc = stardesktop.LoadComponentFromURL(sUrl,""_blank"",OpenProp())"
MsgBox(sResult,"Select,Press Ctrl+C and Paste to macro")
End Sub
这个宏使用了 getValArg 辅助函数,这里是它的文本
Function getValArg(aArg As Variant,sNameArg As String) As Variant
Dim i As Long
Dim tmp As Variant
getValArg = ""
For i = LBound(aArg) To UBound(aArg)
tmp = aArg(i)
If UCase(tmp.Name) = UCase(sNameArg) Then
getValArg = tmp.Value
Exit Function
EndIf
Next i
End Function
结果,您会收到这样的消息。
注意下划线。如果您只对文件使用这样的参数(无论您在 Calc 中使用何种编程语言打开文件),那么在大多数情况下结果都是正确的。
, 将其转换为字符串,例如:
echo "'".$number."'";
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。