public PracticalFileAutograph(PracticalFile practicalFile) { InitializeComponent(); if (!this.IsInDesignMode()) { container.SetBinding(Panel.DataContextProperty, new Binding(".") { Source = practicalFile }); } }
private void OpenFileDialogExecuted(object sender, ExecutedRoutedEventArgs e) { System.Windows.Forms.OpenFileDialog ofd = new System.Windows.Forms.OpenFileDialog(); ofd.Filter = "Excel文件|*.xls"; ofd.Multiselect = true; if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { for (int i = 0; i < ofd.FileNames.Length; i++) { PracticalFile file = new PracticalFile(); file.Path = ofd.FileNames[i]; file.Name = System.IO.Path.GetFileNameWithoutExtension(ofd.FileNames[i]); file.Index = files.Count; file.IsLast = i == ofd.FileNames.Length - 1; files.Add(file); } } ofd.Dispose(); }
private void LoadPractical(string practicalFilePath) { FileStream fs = null; byte[] buffer = null; PracticalFile[] items = null; int[] practicalProjectCountArray = null; int[][] practicalProjectContentBufferLengthArray = null; int[][] practicalProjectF1BufferLengthArray = null; int[] practicalProjectF2BufferLengthArray = null; int[] practicalNameBufferLength = null; int[] practicalAutographCount = null; long[] practicalContentBufferLength = null; try { fs = new FileStream(practicalFilePath, FileMode.Open, FileAccess.Read); buffer = new byte[sizeof(int)]; fs.Read(buffer, 0, buffer.Length); items = new PracticalFile[BitConverter.ToInt32(buffer, 0)]; practicalProjectCountArray = new int[items.Length]; practicalProjectContentBufferLengthArray = new int[items.Length][]; practicalProjectF1BufferLengthArray = new int[items.Length][]; practicalProjectF2BufferLengthArray = new int[items.Length]; practicalNameBufferLength = new int[items.Length]; practicalAutographCount = new int[items.Length]; practicalContentBufferLength = new long[items.Length]; for (int i = 0; i < items.Length; i++) { items[i] = new PracticalFile(); } for (int i = 0; i < items.Length; i++) { buffer = new byte[sizeof(int)]; fs.Read(buffer, 0, buffer.Length); practicalAutographCount[i] = BitConverter.ToInt32(buffer, 0); } for (int i = 0; i < items.Length; i++) { buffer = new byte[sizeof(int)]; fs.Read(buffer, 0, buffer.Length); practicalProjectCountArray[i] = BitConverter.ToInt32(buffer, 0); practicalProjectContentBufferLengthArray[i] = new int[practicalProjectCountArray[i]]; practicalProjectF1BufferLengthArray[i] = new int[practicalProjectCountArray[i]]; } for (int i = 0; i < items.Length; i++) { for (int j = 0; j < practicalProjectCountArray[i]; j++) { PracticalProject project = new PracticalProject(); project.Index = j; items[i].Projects.Add(project); } } for (int i = 0; i < items.Length; i++) { for (int j = 0; j < practicalProjectCountArray[i]; j++) { buffer = new byte[sizeof(int)]; fs.Read(buffer, 0, buffer.Length); practicalProjectContentBufferLengthArray[i][j] = BitConverter.ToInt32(buffer, 0); } } for (int i = 0; i < items.Length; i++) { for (int j = 0; j < practicalProjectCountArray[i]; j++) { buffer = new byte[sizeof(int)]; fs.Read(buffer, 0, buffer.Length); practicalProjectF1BufferLengthArray[i][j] = BitConverter.ToInt32(buffer, 0); } } for (int i = 0; i < items.Length; i++) { buffer = new byte[sizeof(int)]; fs.Read(buffer, 0, buffer.Length); practicalProjectF2BufferLengthArray[i] = BitConverter.ToInt32(buffer, 0); } for (int i = 0; i < items.Length; i++) { buffer = new byte[sizeof(int)]; fs.Read(buffer, 0, buffer.Length); practicalNameBufferLength[i] = BitConverter.ToInt32(buffer, 0); } for (int i = 0; i < items.Length; i++) { buffer = new byte[sizeof(long)]; fs.Read(buffer, 0, buffer.Length); practicalContentBufferLength[i] = BitConverter.ToInt64(buffer, 0); } for (int i = 0; i < items.Length; i++) { for (int j = 0; j < practicalProjectCountArray[i]; j++) { buffer = new byte[practicalProjectContentBufferLengthArray[i][j]]; fs.Read(buffer, 0, buffer.Length); items[i].Projects[j].Content = UTF8Encoding.UTF8.GetString(buffer); } } for (int i = 0; i < items.Length; i++) { for (int j = 0; j < practicalProjectCountArray[i]; j++) { buffer = new byte[practicalProjectF1BufferLengthArray[i][j]]; fs.Read(buffer, 0, buffer.Length); items[i].Projects[j].HelperText = UTF8Encoding.UTF8.GetString(buffer); } } for (int i = 0; i < items.Length; i++) { buffer = new byte[practicalProjectF2BufferLengthArray[i]]; fs.Read(buffer, 0, buffer.Length); items[i].HelperText = UTF8Encoding.UTF8.GetString(buffer); } for (int i = 0; i < items.Length; i++) { for (int j = 0; j < practicalAutographCount[i]; j++) { Autograph autograph = new Autograph(); buffer = new byte[sizeof(int)]; fs.Read(buffer, 0, buffer.Length); buffer = new byte[BitConverter.ToInt32(buffer, 0)]; fs.Read(buffer, 0, buffer.Length); autograph.SheetName = UTF8Encoding.UTF8.GetString(buffer); buffer = new byte[sizeof(int)]; fs.Read(buffer, 0, buffer.Length); autograph.RowIndex = BitConverter.ToInt32(buffer, 0); buffer = new byte[sizeof(int)]; fs.Read(buffer, 0, buffer.Length); autograph.ColIndex = BitConverter.ToInt32(buffer, 0); items[i].Autographs.Add(autograph); } } for (int i = 0; i < items.Length; i++) { buffer = new byte[practicalNameBufferLength[i]]; fs.Read(buffer, 0, buffer.Length); items[i].Index = i; items[i].Name = UTF8Encoding.UTF8.GetString(buffer); items[i].Path = System.IO.Path.Combine(loadPracticalFileFolder, items[i].Name + ".xls"); for (int j = 0; j < practicalProjectCountArray[i]; j++) { items[i].Projects[j].PracticalName = items[i].Name; } } for (int i = 0; i < items.Length; i++) { FileStream writeFs = null; try { writeFs = new FileStream(items[i].Path, FileMode.Create, FileAccess.Write); while (writeFs.Length != practicalContentBufferLength[i]) { buffer = new byte[practicalContentBufferLength[i] - writeFs.Length > BUFFER_PACKAGE_LENGTH ? BUFFER_PACKAGE_LENGTH : practicalContentBufferLength[i] - writeFs.Length]; fs.Read(buffer, 0, buffer.Length); writeFs.Write(buffer, 0, buffer.Length); } } catch { throw; } finally { if (writeFs != null) { writeFs.Dispose(); } } } for (int i = 0; i < items.Length; i++) { files.Add(items[i]); } } catch { throw new Exception("题库加载错误。"); } finally { if (fs != null) { fs.Dispose(); } } }