微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

DB Csv 导出和 Excel 数字格式

如何解决DB Csv 导出和 Excel 数字格式

我正在以 csv 格式从数据库导出一个表。我有以 0 开头的数字,例如 04596 或 059438。 如果我在 LibreOffice 或 Excel 中打开这个 csv,0 将被丢弃,数字显示为 4596 和 59438。 我将数字导出为文本,如果我在记事本 ++ 中打开 csv 文件,则 0 都在那里。

是否有一种解决方法可以使数字在文件中可见?

解决方法

当您在 Calc 中手动打开 CSV 文件时,您会看到文本导入过滤器设置窗口。花点时间点击确定,不要跳过这一步!

选择不应被识别为数字但应保留带前导零的文本的列,并将其类型指定为文本。还要为其余的列设置正确的类型。您可以为不需要的列指定隐藏。检查其余参数的状态 - 代码页、语言、文本字段的引号类型等。

ImportCSV.png

现在点击确定。确保导入按预期进行。

现在运行这个简单的宏

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

结果,您会收到这样的消息。

ImportCSVFilterOptions.png

注意下划线。如果您只对文件使用这样的参数(无论您在 Calc 中使用何种编程语言打开文件),那么在大多数情况下结果都是正确的。

,

将其转换为字符串,例如: echo "'".$number."'";

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。