hộp đá quý. Bảng tính là một. NET cho phép bạn đọc, viết, chuyển đổi và in các tệp bảng tính [XLSX, XLS, XLSB, CSV, HTML và ODS] từ. ứng dụng NET. Với GemBox. Bảng tính bạn nhận được một thành phần nhanh và đáng tin cậy, dễ sử dụng và không phụ thuộc vào Microsoft Excel. Nó yêu cầu
Thư viện lập trình bảng tính Excel có khả năng xây dựng các ứng dụng đa nền tảng với khả năng tạo, sửa đổi, chuyển đổi, kết xuất và in tất cả các tệp Excel. . NET Excel API không chỉ chuyển đổi giữa các định dạng bảng tính, nó còn có thể hiển thị các tệp Excel dưới dạng hình ảnh, PDF, HTML, ODS, CSV, SVG, JSON, WORD, PPT, v.v., do đó, đây là lựa chọn hoàn hảo để trao đổi tài liệu theo tiêu chuẩn ngành Thư viện lập trình bảng tính Excel có khả năng xây dựng các ứng dụng đa nền tảng với khả năng tạo, sửa đổi, chuyển đổi, kết xuất và in tất cả các tệp Excel. . NET Excel API không chỉ chuyển đổi giữa các định dạng bảng tính, nó còn có thể hiển thị các tệp Excel dưới dạng hình ảnh, PDF, HTML, ODS, CSV, SVG, JSON, WORD, PPT, v.v., do đó, đây là lựa chọn hoàn hảo để trao đổi tài liệu theo tiêu chuẩn ngànhMicrosoft Excel XLSX và CSV dựa trên văn bản [các giá trị được phân tách bằng dấu phẩy] là định dạng tệp phổ biến để trao đổi dữ liệu và các ứng dụng có thể hưởng lợi đáng kể từ việc triển khai hỗ trợ đọc và ghi các định dạng tệp này. Trong ví dụ này, chúng tôi sẽ tải xuống dữ liệu thị trường Bitcoin-Đô la Mỹ hàng tháng mới nhất ở định dạng CSV và sau đó nhập dữ liệu CSV đó vào Ứng dụng dịch vụ web C# [có thể hoạt động trên nhiều nền tảng] để tạo bảng tính XLSX mới chứa dữ liệu ở dạng . Sau đó, ứng dụng web sẽ trả về bảng tính XLSX. Bảng tính này có thể được mở trong bất kỳ ứng dụng bảng tính nào đọc các tệp bảng tính XML đối tượng mở [OOXML] tiêu chuẩn
Chúng tôi sẽ sử dụng dịch vụ web để lấy dữ liệu [theo liên kết để nhận khóa API miễn phí của bạn để sử dụng trong các ví dụ về mã] và GrapeCity Documents cho Excel. NET v5. 2, có hỗ trợ tích hợp để nhập dữ liệu CSV, tạo bảng tính mới có bảng, biểu đồ, v.v. và xuất một XLSX mới theo các bước sau
- [sử dụng Visual Studio 2022 để tạo ASP mới. NET Core Web API]
- [sử dụng dịch vụ web AlphaVantage để nhận dữ liệu BTC-USD hàng tháng ở định dạng CSV]
- [sử dụng Tài liệu GrapeCity cho Excel. NET API]
- [sắp xếp lại các cột, tạo bảng và tạo biểu đồ có đường xu hướng]
- [sử dụng Tài liệu GrapeCity cho Excel. NET API]
Sẵn sàng để dùng thử?
Tạo dự án
Hình 1 Tạo ASP mới. NET Core Web API Project trong Visual Studio 2022
Sử dụng Visual Studio 2022, tạo dự án mới [CTRL+SHIFT+N] và chọn C#, Tất cả nền tảng và WebAPI trong trình đơn thả xuống để tìm nhanh loại dự án ASP. NET Core Web API, sau đó chọn nó và nhấp vào Tiếp theo
Hình 2 Cấu hình ASP mới. NET Core Web API Project trong Visual Studio 2022
Nhập BTC_Chart_WebService cho Tên dự án và chọn một Vị trí cho dự án, sau đó nhấp vào Tiếp theo
Hình 3 Định cấu hình mục tiêu khung
Lựa chọn. MẠNG 6. 0 [Hỗ trợ dài hạn] cho Khuôn khổ, sau đó nhấp vào Tiếp theo
Thao tác này sẽ tạo một mẫu ASP. NET Core WebAPI, chứa mã mẫu để trả về dự báo thời tiết. Chúng tôi sẽ không cần điều đó trong dự án của mình, nhưng chúng tôi có thể sử dụng lại và sử dụng lại Bộ điều khiển. Sử dụng Solution Explorer [CTRL+ALT+L] để đổi tên tệp Trình điều khiển trong dự án [bên dưới Bộ điều khiển] thành BTCChartController. cs
Hình 4 Trong Bộ điều khiển, đổi tên WeatherForecastController. cs vào BTCChartController. cs
Khi bạn thay đổi tên tệp, Visual Studio sẽ nhắc bạn và hỏi xem bạn có muốn thay đổi tất cả tham chiếu mã trong dự án hay không – nhấp vào Có trong hộp thoại
Hình 5 Đổi tên tham chiếu mã - nhấp vào Có tại đây
Sau đó chọn tệp dự án WeatherForecast. cs và xóa nó khỏi dự án [DEL], sau đó nhấp vào Có trong hộp thoại yêu cầu bạn xác nhận
Hình 6 Xác nhận xóa WeatherForecast. cs từ dự án
Bây giờ trong Solution Explorer [CTRL+ALT+L], nhấp chuột phải vào Phần phụ thuộc và chọn Quản lý các gói NuGet
Hình 7 Mở Quản lý gói NuGet từ Phần phụ thuộc của Solution Explorer
Tìm kiếm GrapeCity. Các tài liệu. Excel trên nuget. org và cài đặt phiên bản 5. 2. 0 [hoặc mới hơn] trong dự án
Truy vấn dữ liệu
Bây giờ, trong Solution Explorer [CTRL+ALT+L], hãy chọn tệp BTCChartController. cs để chỉnh sửa và nhận xét mã không cần thiết cho Tóm tắt liên quan đến dự báo thời tiết
Bộ điều khiển biểu đồ BTC
public class BTCChartController : ControllerBase
{
// private static readonly string[] Summaries = new[]
// {
// "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
//};
Bây giờ, hãy thêm mã sau vào bên dưới mã đã nhận xét ở trên để truy vấn dịch vụ web AlphaVantage cho dữ liệu BTC-USD hàng tháng ở định dạng CSV [thay thế trong mã]
GetCSVData
// private static readonly string[] Summaries = new[]
// {
// "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
//};
// Get the CSV data from the AlphaVantage web service
private string GetCsvData[]
{
string csv;
string API_KEY = "YOUR_KEY_HERE";
string QUERY_URL = $"//www.alphavantage.co/query?function=DIGITAL_CURRENCY_MONTHLY&symbol=BTC&market=USD&apikey={API_KEY}&datatype=csv";
Uri queryUri = new Uri[QUERY_URL];
using [HttpClient client = new HttpClient[]]
{
Task t = client.GetStringAsync[queryUri];
while [!t.IsCompleted]
t.Wait[];
csv = t.Result;
}
return csv;
}
Tải CSV
Bây giờ, sao chép mã sau vào phương thức Get[], cập nhật Name trong thuộc tính HttpGet thành GetBTC-USDChartWorkbook, đồng thời thay đổi loại trả về thành FileContentResult, sau đó nhận xét mã liên quan đến dự báo thời tiết trước khi thêm mã để gọi GetCsvData
Bộ điều khiển biểu đồ BTC. Được
[HttpGet[Name = "GetBTC-USDChartWorkbook"]]
//public IEnumerable Get[]
public FileContentResult Get[]
{
//return Enumerable.Range[1, 5].Select[index => new WeatherForecast
//{
// Date = DateTime.Now.AddDays[index],
// TemperatureC = Random.Shared.Next[-20, 55],
// Summary = Summaries[Random.Shared.Next[Summaries.Length]]
//}]
//.ToArray[];
// first get CSV data
string csv = GetCsvData[];
// create new workbook
IWorkbook wbk = new Workbook[];
// open CSV data in GcExcel using MemoryStream
using [Stream s = new MemoryStream[]]
{ // convert to byte array using UTF8 encoding
byte[] arr = System.Text.Encoding.UTF8.GetBytes[csv.ToCharArray[]];
s.Write[arr];
s.Seek[0, SeekOrigin.Begin];
// open CSV in workbook
wbk.Open[s, OpenFileFormat.Csv];
}
Xử lý CSV
Giờ hãy sao chép mã sau để xử lý CSV trong sổ làm việc.
Bộ điều khiển biểu đồ BTC. Nhận [tiếp]
// get the worksheet with the CSV data
IWorksheet wks = wbk.Worksheets[0];
// move volume to column B, before open/high/low/close
// it works better to create the StockVOHLC chart with
// the series in the correct order [date-volume-open-high-low-close]
wks.Range["B:B"].Insert[];
wks.Range["K:K"].Copy[wks.Range["B:B"]];
wks.Range["K:K"].Delete[];
// get the range containing the CSV data
IRange used = wks.UsedRange;
// create a new Table for the CSV data named "BTC_Monthly"
ITable tbl = wks.Tables.Add[used, true];
tbl.Name = "BTC_Monthly";
// auto-fit the columns in the table to show all the cell values
used.AutoFit[];
// add the StockVOHLC chart shape over the table [the table is completely beneath the chart]
IShape shape = wks.Shapes.AddChart[ChartType.StockVOHLC, 0, 0, used.Width, used.Height];
// get the IChart from the shape
IChart chart = shape.Chart;
// set the chart title
chart.ChartTitle.Text = "BitCoin Monthly Open-High-Low-Close-Volume";
// add the chart series [the first 6 columns in the table]
chart.SeriesCollection.Add[wks.Range[0, 0, used.RowCount, 6], RowCol.Columns, true, true];
// add trend line for Volume series in Blue
ITrendline voltrend = chart.SeriesCollection[0].Trendlines.Add[];
voltrend.Name = "3 Month Moving Avg VOL";
voltrend.Type = TrendlineType.MovingAvg;
voltrend.Period = 3;
voltrend.Format.Line.Color.RGB = Color.Blue;
voltrend.Format.Line.DashStyle = LineDashStyle.RoundDot;
// add trend line for High series in Green
ITrendline hightrend = chart.SeriesCollection[2].Trendlines.Add[];
hightrend.Name = "3 Month Moving Avg HIGH";
hightrend.Type = TrendlineType.MovingAvg;
hightrend.Period = 3;
hightrend.Format.Line.Color.RGB = Color.Green;
hightrend.Format.Line.DashStyle = LineDashStyle.RoundDot;
// add trend line for Low series in Red
ITrendline lowtrend = chart.SeriesCollection[3].Trendlines.Add[];
lowtrend.Name = "3 Month Moving Avg LOW";
lowtrend.Type = TrendlineType.MovingAvg;
lowtrend.Period = 3;
lowtrend.Format.Line.Color.RGB = Color.Red;
lowtrend.Format.Line.DashStyle = LineDashStyle.RoundDot;
Đầu tiên, mã lấy IWorksheet có dữ liệu CSV và sắp xếp lại các cột để đặt cột Khối lượng giữa cột Ngày và cột Mở. Sau đó, nó tạo một Bảng có tên BTC_Monthly chứa dữ liệu CSV và tự động khớp các cột trong Bảng. Sau đó, mã thêm một Biểu đồ mới trong trang tính thuộc loại Cổ phiếuVOHLC [Khối lượng-Mở-Cao-Thấp-Đóng] trên toàn bộ phạm vi bảng, đặt tiêu đề biểu đồ, thêm chuỗi vào biểu đồ rồi tạo ba Đường xu hướng. Đường xu hướng hiển thị các đường trung bình động trong ba tháng cho Khối lượng có màu xanh lam, Cao có màu xanh lá cây và Thấp có màu đỏ
Trả lại XLSX
Giờ hãy sao chép mã sau đây để lưu Workbook vào XLSX và gửi lại từ dịch vụ web
// Save Workbook to XLSX and return from web service as "BTC_Chart.xlsx"
using [MemoryStream ms = new MemoryStream[]]
{
wbk.Save[ms, SaveFileFormat.Xlsx];
ms.Seek[0, SeekOrigin.Begin];
byte[] bytes = ms.ToArray[];
return File[bytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "BTC_Chart.xlsx"];
}
} // Get[]
} // BTCChartController
Bây giờ dự án đã hoàn thành và sẵn sàng để chạy. Nhấn F5 để chạy ở chế độ gỡ lỗi và bạn có thể dùng thử
Hình 8 Nhấn F5 để chạy BTC_Chart_WebService trong Gỡ lỗi
Mở danh sách thả xuống và nhấp vào Dùng thử
Hình 9 Nhấn Dùng thử để kiểm tra dịch vụ web
Sau đó nhấp vào Thực thi và bạn sẽ sớm thấy kết quả thành công và liên kết để tải xuống tệp XLSX