[研究]SpreadsheetLight.3.5.0 試用 (支援 Excel和Calc,但支援.xlsx不支援.ods)
2024-11-05
環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19
https://spreadsheetlight.com/
Open source developer-friendly spreadsheet library compatible with Microsoft Excel 2007/2010/2013 and LibreOffice Calc.
實際找查,支援 Calc,但整個網站沒找到 .ods,可能只支援 Excel檔案。
https://spreadsheetlight.com/license/
SpreadsheetLight uses the MIT License.
https://spreadsheetlight.com/sample-code/
********************************************************************************
相依
- System.Drawing.Common.5.0.0
- System.IO.FileSystem.Primitives.4.3.0
- System.IO.Packaging.4.7.0
- DocumentFormat.OpenXml.2.11.3
- SpreadsheetLight.3.5.0
********************************************************************************
- DocumentFormat.OpenXml.2.11.3 -> DocumentFormat.OpenXml.3.1.1
- System.IO.Packaging.4.7.0 -> System.IO.Packaging.8.0.1
- System.Drawing.Common.5.0.0 -> System.Drawing.Common.8.0.10
- Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1 -> Microsoft.CodeDom.Providers.DotNetCompilerPlatform.4.1.0
正在安裝:
- DocumentFormat.OpenXml.Framework.3.1.1
********************************************************************************
參考
https://spreadsheetlight.com/downloads/samplecode/HelloWorld.cs
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1.Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <form id="form1" runat="server"> </form> </body> </html> |
Default.aspx.cs
using SpreadsheetLight; using System; namespace WebApplication1 { public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // https://spreadsheetlight.com/downloads/samplecode/HelloWorld.cs SLDocument sl = new SLDocument(); // set a boolean at "A1" sl.SetCellValue("A1", true); // set at row 2, columns 1 through 20, a value that's equal to the column index for (int i = 1; i <= 20; ++i) sl.SetCellValue(2, i, i); // set the value of PI sl.SetCellValue("B3", 3.14159); // set the value of PI at row 4, column 2 (or "B4") in string form. // use this when you already have numeric data in string form and don't // want to parse it to a double or float variable type // and then set it as a value. // Note that "3,14159" is invalid. Excel (or Open XML) stores numerals in // invariant culture mode. Frankly, even "1,234,567.89" is invalid because // of the comma. If you can assign it in code, then it's fine, like so: // double fTemp = 1234567.89; sl.SetCellValueNumeric(4, 2, "3.14159"); // normal string data sl.SetCellValue("C6", "This is at C6!"); // typical XML-invalid characters are taken care of, // in particular the & and < and > sl.SetCellValue("I6", "Dinner & Dance costs < $10"); // this sets a cell formula // Note that if you want to set a string that starts with the equal sign, // but is not a formula, prepend a single quote. // For example, "'==" will display 2 equal signs sl.SetCellValue(7, 3, "=SUM(A2:T2)"); // if you need cell references and cell ranges *really* badly, consider the SLConvert class. sl.SetCellValue(SLConvert.ToCellReference(7, 4), string.Format("=SUM({0})", SLConvert.ToCellRange(2, 1, 2, 20))); // dates need the format code to be displayed as the typical date. // Otherwise it just looks like a floating point number. sl.SetCellValue("C8", new DateTime(3141, 5, 9)); SLStyle style = sl.CreateStyle(); style.FormatCode = "d-mmm-yyyy"; sl.SetCellStyle("C8", style); sl.SetCellValue(8, 6, "I predict this to be a significant date. Why, I do not know..."); sl.SetCellValue(9, 4, 456.123789); // we don't have to create a new SLStyle because // we only used the FormatCode property style.FormatCode = "0.000%"; sl.SetCellStyle(9, 4, style); sl.SetCellValue(9, 6, "Perhaps a phenomenal growth in something?"); sl.SaveAs("HelloWorld.xlsx"); Console.WriteLine("End of program"); Console.ReadLine(); } } } |
********************************************************************************
結果
受控偵錯助理 'FatalExecutionEngineError' : 'The runtime has encountered a fatal error. The address of the error was at 0x597faa96, on thread 0x23ac. The error code is 0xc0000005. This error may be a bug in the CLR or in the unsafe or non-verifiable portions of user code. Common sources of this bug include user marshaling errors for COM-interop or PInvoke, which may corrupt the stack.'
相關
沒有留言:
張貼留言