[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f2aficddikm55y":3},{"_id":4,"slug":5,"title":6,"subtitle":7,"kind":8,"cards":9,"tags":58,"categories":60,"source":62,"lang":65,"author":66,"audioState":69,"stats":70,"publishedAt":73,"renderer":74},"6abb9c35ca21c797c7e9d228","five-edge-cases-to-test-before-shipping-a-browser-table-expo-521bacb1","Five edge cases to test before shipping a browser table exporter","A spreadsheet download can look successful while quietly changing the data.","news",[10,13,18,23,28,33,38,43,48,53],{"headline":6,"body":11,"imageUrl":12,"sourceImageUrl":12},"A spreadsheet download can look successful while quietly changing the data. An identifier loses its leading zeros, a long number changes precision, or a merged header shifts values into the wrong columns.","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1200,height=627,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2w86qn7r6hdkyr5ghi8g.png",{"headline":14,"body":15,"imageUrl":16,"images":17},"While building Local Table Export, we made the","While building Local Table Export, we made the export format and the extraction boundary explicit. Here are five test cases that are useful for any browser-to-spreadsheet tool. 1. Identifiers that look like numbers","\u002Fapi\u002Fmedia\u002Fposts\u002Ffive-edge-cases-to-test-before-shipping-a-browser-table-expo-521bacb1\u002F1.webp",{"local":16},{"headline":19,"body":20,"imageUrl":21,"images":22},"Use an example such as 00123. Its meaning","Use an example such as 00123. Its meaning is an identifier, not a quantity. Keep the original string and make text the default column type. Let the person exporting explicitly opt a column into numeric conversion.","\u002Fapi\u002Fmedia\u002Fposts\u002Ffive-edge-cases-to-test-before-shipping-a-browser-table-expo-521bacb1\u002F2.webp",{"local":21},{"headline":24,"body":25,"imageUrl":26,"images":27},"Our XLSX writer emits text as an inline","Our XLSX writer emits text as an inline string cell. Numeric conversion is limited to explicitly selected columns, after the header row, and uses a conservative decimal pattern. Values outside that pattern remain text. This intentionally leaves locale-specific values such as 1,234.50 for review instead of guessing their meaning. 2. Values beyond the numeric policy","\u002Fapi\u002Fmedia\u002Fposts\u002Ffive-edge-cases-to-test-before-shipping-a-browser-table-expo-521bacb1\u002F3.webp",{"local":26},{"headline":29,"body":30,"imageUrl":31,"images":32},"Test a long digit string such as 90071992547409999","Test a long digit string such as 90071992547409999. Our exporter keeps values with more than 15 digits as text even in a selected numeric column. That is a product decision to preserve the input, not a claim that arbitrary numeric values can be round-tripped safely.","\u002Fapi\u002Fmedia\u002Fposts\u002Ffive-edge-cases-to-test-before-shipping-a-browser-table-expo-521bacb1\u002F4.webp",{"local":31},{"headline":34,"body":35,"imageUrl":36,"images":37},"The test should inspect the cell type as","The test should inspect the cell type as well as the visible value. Finding the digits somewhere in the archive is insufficient if the consumer still treats them as numeric data. 3. Formula-looking content","\u002Fapi\u002Fmedia\u002Fposts\u002Ffive-edge-cases-to-test-before-shipping-a-browser-table-expo-521bacb1\u002F5.webp",{"local":36},{"headline":39,"body":40,"imageUrl":41,"images":42},"A webpage cell can begin with = or","A webpage cell can begin with = or another character a spreadsheet application treats specially. Do not automatically turn webpage content into workbook formulas.","\u002Fapi\u002Fmedia\u002Fposts\u002Ffive-edge-cases-to-test-before-shipping-a-browser-table-expo-521bacb1\u002F6.webp",{"local":41},{"headline":44,"body":45,"imageUrl":46,"images":47},"Our XLSX test checks that the sheet contains","Our XLSX test checks that the sheet contains no formula elements. The CSV path prefixes formula-looking values with an apostrophe. That changes the exported representation, so it is a mitigation with a tradeoff; CSV behavior still needs testing in the spreadsheet applications you support.","\u002Fapi\u002Fmedia\u002Fposts\u002Ffive-edge-cases-to-test-before-shipping-a-browser-table-expo-521bacb1\u002F7.webp",{"local":46},{"headline":49,"body":50,"imageUrl":51,"images":52},"Quoting every CSV field solves delimiter escaping. It","Quoting every CSV field solves delimiter escaping. It does not, by itself, establish a column type or guarantee that a consumer will treat the field as literal text. 4. Merged headers and multiline cells","\u002Fapi\u002Fmedia\u002Fposts\u002Ffive-edge-cases-to-test-before-shipping-a-browser-table-expo-521bacb1\u002F8.webp",{"local":51},{"headline":54,"body":55,"imageUrl":56,"images":57},"Use a fixture with both rowspan and colspan","Use a fixture with both rowspan and colspan, then check the entire rectangular result. Otherwise a plausible-looking export can put an amount under the wrong heading. Define whether merged positions become blanks or repeat values, and make the behavior consistent.","\u002Fapi\u002Fmedia\u002Fposts\u002Ffive-edge-cases-to-test-before-shipping-a-browser-table-expo-521bacb1\u002F9.webp",{"local":56},[59],"dev",[61],"Technology",{"name":63,"url":64},"Dev.to","https:\u002F\u002Fdev.to\u002Fadarsh_kant_ebb2fde1d0c6b\u002Ffive-edge-cases-to-test-before-shipping-a-browser-table-exporter-11oa","en",{"handle":67,"displayName":68},"spots","Spots","queued",{"views":71,"likes":72,"saves":72,"shares":72,"completions":72,"opens":72,"skips":72,"depthSum":72},3,0,"2026-09-29T11:08:37.232Z","local"]