#c# #.net #excel #epplus-4
#c# #.net #excel #epplus-4
Вопрос:
Я пытаюсь прочитать файл Excel, используя EPPlus версии 4.5.3, что я могу сделать, используя приведенный ниже код:
FileInfo existingFile = new FileInfo(FilePath);
using (ExcelPackage package = new ExcelPackage(existingFile))
{
//get the first worksheet in the workbook
ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
int colCount = worksheet.Dimension.End.Column; //get Column Count
int rowCount = worksheet.Dimension.End.Row; //get row count
for (int row = 1; row <= rowCount; row )
{
for (int col = 1; col <= colCount; col )
{
Console.WriteLine(" Row:" row " column:" col " Value:" worksheet.Cells[row, col].Value?.ToString().Trim());
}
}
}
Теперь я застрял на фигурах. Итак, в файле Excel, который мне нужно прочитать, есть фигуры, внутри этих фигур есть текст, который я пытаюсь прочитать. Я пробовал искать в Интернете эту проблему, но, похоже, я ничего не могу найти по ней.
Как я могу прочитать эти данные? Код, который я пробовал до сих пор:
foreach (var drawing in sheet.Drawings)
{
var type = drawing.GetType();
var data = drawing.ToString();
Console.WriteLine("Drawing Type:" type " Data: " data);
}
Комментарии:
1. тебе это понравилось? У меня такая же проблема
Ответ №1:
У меня возникла эта проблема только сегодня, и я разобрался с ней. Вы должны выполнить итерацию на листе.Сначала соберите чертежи, чтобы определить, являются ли какие-либо чертежи «фигурами». Из того, что я знаю о Excel VBA, вы не можете поместить текст на изображение, это должна быть фигура. Кто-нибудь может поправить меня, если я ошибаюсь.
using (ExcelPackage excelPackage = new ExcelPackage(stream))
{
ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets[1];
foreach (ExcelDrawing dw in worksheet.Drawings)
{
if (dw.GetType().ToString() == "OfficeOpenXml.Drawing.ExcelShape")
{
ExcelShape shape = (ExcelShape)dw;
if (shape.RichText != null amp;amp; shape.RichText.Count > 0)
{
foreach (ExcelParagraph item in shape.RichText)
{
Console.WriteLine("{0} - Rich Text Line: {1}", dw.Name, item.Text);
}
}
}
else
{ Console.WriteLine("{0} is not a shape, its a {1}", dw.Name, dw.GetType().ToString()); }
}
}
Оттуда должно быть довольно легко перейти к изменению текста на картинке:
item.RichText[1].Text = "Updated Text";
Вывод:
Picture 1 is not a shape, its a OfficeOpenXml.Drawing.ExcelPicture
TextBox 1 - Rich Text Line: Inventory List
TextBox 1 - Rich Text Line: Some Company