ClosedXML插入数据与提取数据不匹配及工作簿损坏问题求助
ClosedXML写入Excel时非数值数据不匹配且工作簿损坏问题
我用ClosedXML替代OLEDB做Excel操作,代码实现简单,但从DataTable写入工作表后多数非数值数据不正确,还出现工作簿损坏提示(位置:第82行第19列)。
简化代码
using (XLWorkbook wkb = new XLWorkbook(exportFile.FullName)) { var dataTable = GetSqlDbData("usp_GetMyData"); IXLWorksheet wks = wkb.Worksheet("ExtractData"); wks.Cell(2, 1).InsertData(dataTable.AsEnumerable()); wks.Columns().AdjustToContents(); }
存储过程返回数据示例
存储过程返回21列445行数据,包含数值、文本等类型,其中空值对应数据库NULL,示例行数据如下:
Row 1: Column=OfficeName, Type=String, Value=UK - London Row 1: Column=AssociateName, Type=String, Value=Smith, Mr Row 1: Column=CompanyID, Type=Int32, Value=682 Row 1: Column=CompanyName, Type=String, Value=My Pension Plan Row 1: Column=SchemeID, Type=Int32, Value=820 Row 1: Column=SchemeName, Type=String, Value=My UK Pension Plan Row 1: Column=AccountingDate, Type=String, Value= Row 1: Column=AF_Frequency, Type=String, Value= Row 1: Column=ValuationDate, Type=DateTime, Value=31/12/2018 00:00:00 Row 1: Column=VF_Frequency, Type=String, Value=Triennial Row 1: Column=TrusteeClientCode, Type=String, Value=618676 Row 1: Column=TrusteeEngagementCode, Type=String, Value=3302073 Row 1: Column=CorporateClientCode, Type=String, Value= Row 1: Column=CorporateEngagementCode, Type=String, Value= Row 1: Column=AccountingCode, Type=String, Value=None Row 1: Column=PPFIssue, Type=Boolean, Value=True Row 1: Column=PPFASK, Type=String, Value=Trustee Row 1: Column=TeamID, Type=Int32, Value=1176 Row 1: Column=TrusteeAdviceGiven, Type=String, Value=Lots of advice Row 1: Column=CompanyAdviceGiven, Type=String, Value=Do not advise Row 1: Column=TranscalcUsage, Type=String, Value=None
损坏工作表的XML内容
损坏文件中第2行的XML内容如下:
<x:row r="2" spans="1:21"> <x:c r="A2" s="0" t="s"> <x:v>21</x:v> </x:c> <x:c r="B2" s="0" t="s"> <x:v>22</x:v> </x:c> <x:c r="C2" s="1"> <x:v>682</x:v> </x:c> <x:c r="D2" s="0" t="s"> <x:v>23</x:v> </x:c> <x:c r="E2" s="1"> <x:v>820</x:v> </x:c> <x:c r="F2" s="0" t="s"> <x:v>24</x:v> </x:c> <x:c r="I2" s="12"> <x:v>43465</x:v> </x:c> <x:c r="J2" s="0" t="s"> <x:v>25</x:v> </x:c> <x:c r="K2" s="0" t="s"> <x:v>26</x:v> </x:c> <x:c r="L2" s="0" t="s"> <x:v>27</x:v> </x:c> <x:c r="O2" s="0" t="s"> <x:v>28</x:v> </x:c> <x:c r="P2" s="0" t="b"> <x:v>1</x:v> </x:c> <x:c r="Q2" s="0" t="s"> <x:v>29</x:v> </x:c> <x:c r="R2" s="0"> <x:v>1176</x:v> </x:c> <x:c r="S2" s="0" t="s"> <x:v>30</x:v> </x:c> <x:c r="T2" s="0" t="s"> <x:v>31</x:v> </x:c> <x:c r="U2" s="0" t="s"> <x:v>28</x:v> </x:c> </x:row>
目前数值型数据(如C、E、R列)及日期型数据(I列)写入正确,但其他字段数据与原数据不符(例如第82行A83单元格值为42,B83为401)。请问为何存储过程返回的非数值数据写入工作簿后不匹配?
内容的提问来源于stack exchange,提问作者MartinS
相关产品推荐
相关产品推荐

