如下,仅供技术学习,请勿用于商业等其他用途。
使用方法
- 下载
Aspose.Total.NET.lic
文件。 - 将该文件放置在您的项目目录中。
- 在应用程序启动时调用以下代码以激活许可证:
new Aspose.Words.License().SetLicense("Aspose.Total.NET.lic");
- 如果您使用的是 ASP.NET 项目,请确保在
web.config
文件中禁用影子复制功能。
其他说明
- 该许可证密钥仅供学习和测试使用,请勿用于商业用途。
using System.Windows.Forms;
using Aspose.Cells;
using OpenFileDialog = System.Windows.Forms.OpenFileDialog;
[assembly: CommandClass(typeof(IFoxDemo.AsposeDemo))]//只允许此类快捷键命令
namespace IFoxDemo
{
public class AsposeDemo
{
[CommandMethod("xx")]
public void ExcelToPolyline()
{
Document doc = Acap.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
// 弹窗提示用户选择 Excel 文件
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Excel Files|*.xls;*.xlsx";
openFileDialog.Title = "选择包含坐标的 Excel 文件";
if (openFileDialog.ShowDialog() != DialogResult.OK)
{
ed.WriteMessage("\n用户取消操作。");
return;
}
string filePath = openFileDialog.FileName;
//new Aspose.Cells.License().SetLicense(@"F:\段个人文件\二开\CAD_NET二开资料(C#)\IfoxDemo\IFoxDemo\Aspose.Total.NET.lic");
激活aspose();
try
{
// 读取 Excel 文件
Workbook workbook = new Workbook(filePath);
Worksheet worksheet = workbook.Worksheets[0]; // 获取第一个工作表
// 存储坐标点
List<Point2d> points = new List<Point2d>();
// 遍历工作表的行
for (int row = 1; row < worksheet.Cells.MaxDataRow + 1; row++)
{
// 读取点号、X、Y 坐标
string pointNumber = worksheet.Cells[row, 0].StringValue; // 点号
double x = worksheet.Cells[row, 1].DoubleValue; // X 坐标
double y = worksheet.Cells[row, 2].DoubleValue; // Y 坐标
// 将坐标添加到点集合
points.Add(new Point2d(x, y));
ed.WriteMessage($"\n读取点 {pointNumber}: X = {x}, Y = {y}");
}
if (points.Count < 2)
{
ed.WriteMessage("\n至少需要两个点来创建多段线。");
return;
}
// 创建多段线
using (Transaction tr = db.TransactionManager.StartTransaction())
{
BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
BlockTableRecord btr = tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
Polyline polyline = new Polyline();
for (int i = 0; i < points.Count; i++)
{
polyline.AddVertexAt(i, points[i], 0, 0, 0);
}
// 闭合多段线(可选)
polyline.Closed = true;
btr.AppendEntity(polyline);
tr.AddNewlyCreatedDBObject(polyline, true);
tr.Commit();
}
ed.WriteMessage($"\n成功创建多段线,包含 {points.Count} 个点。");
}
catch (Exception ex)
{
ed.WriteMessage($"\n错误: {ex.Message}");
}
Env.Editor.ZoomExtents();
}
private static void 激活aspose()
{
string mys = @"PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8TGljZW5zZT4NCiAgPERhdGE+DQogICAgPExpY2Vuc2VkVG8+RG93bmxvYWREZXZUb29scy5jb208L0xpY2Vuc2VkVG8+DQogICAgPEVtYWlsVG8+U3VwcG9ydEBEb3dubG9hZERldlRvb2xzLmNvbTwvRW1haWxUbz4NCiAgICA8TGljZW5zZVR5cGU+U2l0ZSBPRU08L0xpY2Vuc2VUeXBlPg0KICAgIDxMaWNlbnNlTm90ZT5MaW1pdGVkIHRvIDEwMDAgZGV2ZWxvcGVycywgdW5saW1pdGVkIHBoeXNpY2FsIGxvY2F0aW9uczwvTGljZW5zZU5vdGU+DQogICAgPE9yZGVySUQ+MzY2MzIwMDg1NDgyPC9PcmRlcklEPg0KICAgIDxVc2VySUQ+NjU0MTk0Mzg2PC9Vc2VySUQ+DQogICAgPE9FTT5UaGlzIGlzIGEgcmVkaXN0cmlidXRhYmxlIGxpY2Vuc2U8L09FTT4NCiAgICA8UHJvZHVjdHM+DQogICAgICA8UHJvZHVjdD5Bc3Bvc2UuVG90YWwgZm9yIC5ORVQ8L1Byb2R1Y3Q+DQogICAgPC9Qcm9kdWN0cz4NCiAgICA8RWRpdGlvblR5cGU+RW50ZXJwcmlzZTwvRWRpdGlvblR5cGU+DQogICAgPFNlcmlhbE51bWJlcj44OGI3NWM5OS0yM2ExLTRlNTUtOTUxNC0wMTNlYTIwMjNkYTc8L1NlcmlhbE51bWJlcj4NCiAgICA8U3Vic2NyaXB0aW9uRXhwaXJ5PjIwOTkxMjE1PC9TdWJzY3JpcHRpb25FeHBpcnk+DQogICAgPExpY2Vuc2VFeHBpcnk+MjA5OTAxMTQ8L0xpY2Vuc2VFeHBpcnk+DQogICAgPExpY2Vuc2VWZXJzaW9uPjMuMDwvTGljZW5zZVZlcnNpb24+DQogIDwvRGF0YT4NCiAgPFNpZ25hdHVyZT5BYnowUUw1QmZXeEhmdTR1dm9tWGROek95dG9RTEZrd2FCNGQ2Tk9OUDg0QkFSL2lVdmViQnpQMm1GYkp5c3hsYTBvcG9JTEtUckVBWHR3ZURsSSs5VVlxcmZvZkVzR3VIU1hSaS9pL24ybTJDRHFBaHRFZEc3VXF6bXRjeTlhQmUreEQ1eU1CcEw5VHdHTnFhOUJtZVcyYzRrWGZZbGw3N0hmZnFhME45b2c9PC9TaWduYXR1cmU+DQo8L0xpY2Vuc2U+";
new Aspose.Cells.License().SetLicense(new MemoryStream(Convert.FromBase64String(mys)));
}
[CommandMethod("tt")]
public void CreatExcel()
{
激活aspose();
// 创建一个新的工作簿
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets[0];
// 设置表头
worksheet.Cells["A1"].PutValue("序号");
worksheet.Cells["B1"].PutValue("x坐标");
worksheet.Cells["C1"].PutValue("y坐标");
// 填充数据
Random random = new Random();
for (int i = 1; i <= 50; i++)
{
// 序号
worksheet.Cells[$"A{i + 1}"].PutValue(i);
// x坐标
worksheet.Cells[$"B{i + 1}"].PutValue(i);
// y坐标(100-300的随机数)
worksheet.Cells[$"C{i + 1}"].PutValue(random.Next(100, 301));
}
// 获取当前用户的桌面路径
string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
// 设置初始文件名
string baseFileName = "1";
string fileExtension = ".xlsx"; // 注意:EPPlus生成的是.xlsx文件,不是.xls
string fileName = Path.Combine(desktopPath, baseFileName + fileExtension);
// 检查文件名是否已存在,如果存在则添加数字直到找到一个不重复的文件名
int counter = 1;
while (File.Exists(fileName))
{
fileName = Path.Combine(desktopPath, $"{baseFileName}_{counter}{fileExtension}");
counter++;
}
string filePath = System.IO.Path.Combine(desktopPath, fileName);
//workbook.Save(filePath, SaveFormat.Excel97To2003);
workbook.Save(filePath, SaveFormat.Xlsx);
Env.Editor.WriteMessage($"Excel文件已创建并保存到桌面,文件名为{fileName}");
}
public void Lic转字符串()
{
// 获取当前用户的桌面路径
string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
// 设置输出文件的路径
string outputFilePath = Path.Combine(desktopPath, "1.txt");
// 设置要转换的XML文件的路径
string xmlFilePath = @"F:\段个人文件\二开\CAD_NET二开资料(C#)\IfoxDemo\IFoxDemo\Aspose.Total.NET.lic"; // 请替换为您的XML文件实际路径
try
{
// 读取XML文件的字节内容
byte[] xmlBytes = File.ReadAllBytes(xmlFilePath);
// 将字节内容转换为Base64编码的字符串
string base64String = Convert.ToBase64String(xmlBytes);
// 将Base64编码的字符串写入到桌面上的1.txt文件中
File.WriteAllText(outputFilePath, base64String, Encoding.UTF8);
// Console.WriteLine("XML文件已成功转换为Base64字符串并输出到桌面1.txt文件中。");
}
catch (Exception ex)
{
// 捕获并输出异常信息
Console.WriteLine($"发生错误: {ex.Message}");
}
}
}
}